• 使用LoadRunner脚本采集Linux性能数据


      前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”。下面的脚本,是在LoadRunner里连接Linux/Unix远程服务器,收集其磁盘IO的负载到测试结果。

      涉及到三个知识点:

      1)LoadRunner自带“PuTTY Link”的使用,路径为“%LR_PATH%inplink.exe”;

      2)Linux/Unix的磁盘监控指令,读者也可以扩展为其它任何实用指令;

      3)LoadRunner自带函数lr_user_data_point的使用,保存自定义数据到测试结果。

    脚本如下:

     1 #define BUFFER_SIZE 20480 // 初始给它 20 KB 
     2 extern char* strtok(char *token, const char *delimiter); // 显示申明 
     3 Action(){ 
     4     long fp; // 数据流 
     5     int count; // 用于保存流长度 
     6     char buffer[BUFFER_SIZE]; // 给数据流分配内存空间 
     7     char * row_token; // 记录每一行的地址 
     8     char field_name[100]; // 第一列的名称 
     9     int field_value; // 保存系列的值 
    10     char lrudp_name[100]; // 保存LR自定义指标值 
    11     int rc; // 保存返回值 
    12     lr_start_transaction("DiskIO");// Linux采样方式: plink -ssh -l username -pw password hostname command 
    13     lr_save_string("higkoo", "UserName"); 
    14     lr_save_string("123456", "Password"); 
    15     lr_save_string("192.168.10.31", "Server"); 
    16     lr_save_string("iostat -xc | awk 'NR >2 {print $1, $10}'", "Command"); // 使用iostat拿到磁盘IO的状态信息 
    17     lr_save_string(lr_eval_string(""%LR_PATH%\bin\plink" -ssh -l {UserName} -pw {Password} {Server} "{Command}" 2>&1 "), "Result"); // 使用plink连接远程Linux服务器并拿到执行结果 
    18     fp = popen(lr_eval_string("{Result}"), "r"); 
    19     if (fp == NULL) { 
    20         lr_error_message("执行命令失败"); 
    21         return -1; 
    22     } 
    23     count = fread(buffer, sizeof(char), BUFFER_SIZE, fp); // 读取结果 
    24     if (feof(fp) == 0) { 
    25         lr_error_message("返回结果太大,请给数据流分配更大内存空间,谢谢!"); 
    26         return -1; 
    27     } 
    28     if (ferror(fp)) { 
    29         lr_error_message ("监控指令返回错误"); 
    30         return -1; 
    31     } 
    32     if (count == 0) { 
    33         lr_error_message("监控指令返回结果为空"); 
    34         return -1; 
    35     } 
    36     buffer[count] = NULL; 
    37     row_token = (char*) strtok(buffer, "
    "); // 按换行符分割 
    38     if (row_token == NULL) { 
    39         lr_error_message ("未发现有效数据"); 
    40         return -1; 
    41     } 
    42     while (row_token != NULL) { // 开始读取数据 
    43         rc = sscanf(row_token, "%s %d", field_name, &field_value); //分割名称与值 
    44         if (rc != 2) { 
    45             lr_error_message("Incorrect number of items read from the row."); 
    46             return -1; 
    47         } 
    48         sprintf(lrudp_name, "disk_busy_%s", field_name);// 自定义数据的名称 
    49         lr_user_data_point(lrudp_name, field_value);// 保存到LR自定义数据 
    50         row_token = (char*) strtok(NULL, "
    "); 
    51     } 
    52     pclose(fp); 
    53     lr_end_transaction("DiskIO", LR_AUTO); 
    54 }
    55 
    56  
  • 相关阅读:
    返回图片宽高比
    3.1/3.2图片上传类
    php获取图片的拍摄及其他数据信息
    上传类
    pathinfo()的用法
    上传并压缩图片
    将数组转化为键值对
    css3判断某个li标签
    禁止滚动条/启用滚动条
    Keepalived + haproxy双机高可用方案
  • 原文地址:https://www.cnblogs.com/yezhaohui/p/3642778.html
Copyright © 2020-2023  润新知