共计 3490 个字符,预计需要花费 9 分钟才能阅读完成。
使用 LoadRunner 做性能测试,一般的直觉是 LR 只能完成脚本录制和编写模拟用户的请求行为,但是在某些情况下,要监控一些中间件或 web 服务器的性能时,就不能通过录制脚本来完成了,那么就需要手工来编写脚本,通过 LR 自带的 lr_user_data_point(“”,””) 打点函数进行自定义的监控其性能指标。
这里以监控 Tomcat web 服务器为例。
实现思路:
1、配置 Tomcat 登录用户,找到 tomcat-6.0.37 目录下的 /conf/ tomcat-users.xml,添加配置如下:
<tomcat-users>
<role rolename=”manager-gui”/>
<user username=”monitor” password=”123456″ roles=”manager-gui”/>
</tomcat-users>
(配置 Tomcat 登录用户后,建议测试一下配置的用户登录能否登录进入 Tomcat 管理页面)
2、在 Action 脚本中,使用 web_set_user(“ 用户名 ”,” 密码 ”,”tomcat 服务器所在的 IP 地址: 端口 ”);
3、脚本中编写 web_url(); 模拟访问 Tomcat 的 url 并登录
4、利用关联函数 web_reg_save_parm() 动态地捕获想要的数据
5、最后利用打点函数 lr_user_data_point(“监控指标名”,”监控指标值”); 记录用户自定义的数据样本
VuGen 脚本代码如下:
Action_tomcat()
{
double atof(const char * string);
web_reg_save_param(“JVM_FreeMemory”,
“LB=Free memory: “,
“RB= MB”,
“Ord=1”,
LAST);
web_reg_save_param(“JVM_TotalMemory”,
“LB=Total memory: “,
“RB= MB”,
“Ord=1”,
LAST);
web_reg_save_param(“JVM_MaxMemory”,
“LB=Max memory: “,
“RB= MB”,
“Ord=1”,
LAST);
web_reg_save_param(“HTTP_MaxThreads”,
“LB=Max threads: “,
“RB= “,
“Ord=1”,
LAST);
web_reg_save_param(“HTTP_MaxProcessingTime”,
“LB=Max processing time: “,
“RB= s”,
“Ord=1”,
LAST);
web_reg_save_param(“HTTP_RequestCount”,
“LB=Request count: “,
“RB= “,
“Ord=1”,
LAST);
web_reg_save_param(“HTTP_BytesReceived”,
“LB=Bytes received: “,
“RB= MB”,
“Ord=1”,
LAST);
web_set_user(“monitor”,”123456″,”localhost:8088″);
lr_think_time(5);
web_url(“status”,
“URL=http://localhost:8088/manager/status”,
“Resource=0”,
“Referer=”,
“Snapshot=t1.inf”,
“Mode=HTML”,
LAST);
lr_user_data_point(“Tomcat_JVM_FreeMemory”,atof(lr_eval_string(“{JVM_FreeMemory}”)));
lr_user_data_point(“Tomcat_JVM_TotalMemory”,atof(lr_eval_string(“{JVM_TotalMemory}”)));
lr_user_data_point(“Tomcat_JVM_MaxMemory”,atof(lr_eval_string(“{JVM_MaxMemory}”)));
lr_user_data_point(“Tomcat_HTTP_MaxThreads”,atof(lr_eval_string(“{HTTP_MaxThreads}”)));
lr_user_data_point(“Tomcat_HTTP_MaxProcessingTime”,atof(lr_eval_string(“{HTTP_MaxProcessingTime}”)));
lr_user_data_point(“Tomcat_HTTP_ProcessingTime”,atof(lr_eval_string(“{HTTP_ProcessingTime}”)));
lr_user_data_point(“Tomcat_HTTP_RequestCount”,atof(lr_eval_string(“{HTTP_RequestCount}”)));
lr_user_data_point(“Tomcat_HTTP_BytesReceived”,atof(lr_eval_string(“{HTTP_BytesReceived}”)));
return 0;
}
运行脚本,查看回放日志:
脚本编写好(注意:建议将监控 Tomcat 的这段脚本代码放在新插入一个 Action 里面,并且放在之前录制来的业务脚本后面),接下来,优化业务脚本,创建 Controller 等与平时的性能测试流程一样就好了。
在 Controller 监控场景图中,添加“运行时图 - 用户定义的数据点图”
最后在 Analysis 生成结果分析报告中,可以看到“运行时图 - 用户定义的数据点图”是显示有数据的,如图:
注意:这里的 Tomcat_JVM_FreeMemory 和 Tomcat_HTTP_RequestCount 的值会变大些,而 Tomcat_HTTP_MaxThreads、Tomcat_JVM_MaxMemory、Tomcat_HTTP_MaxProcessingTime 等这些值不会变化很大其原因基本上是 tomcat 自身的限制。
结论:可以看出,4~5min 期间存在 tomcat 处理客户端请求瓶颈,后续需要观察其他图进行分析,可能是 CPU 瓶颈。
RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目 http://www.linuxidc.com/Linux/2015-02/113528.htm
Tomcat 权威指南 (第二版)(中英高清 PDF 版 + 带书签) http://www.linuxidc.com/Linux/2015-02/113062.htm
Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm
Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm
CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm
CentOS 6.5 下安装 Tomcat http://www.linuxidc.com/Linux/2015-01/111415.htm
Tomcat 的详细介绍 :请点这里
Tomcat 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-07/120526.htm