zoukankan      html  css  js  c++  java
  • 使用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  
  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/yezhaohui/p/3642778.html
Copyright © 2011-2022 走看看