最近的测试项目中有涉及到nginx,第一次接触。接下来想实践一下nginx设置不同参数配置对应用的性能影响。所以需要对nginx进行性能监测。
nginx性能监测比较直接和方便的方法就是启用http_stub_status_module模块,在浏览器访问查看实时性能指标,有点类似于tomcat管理页面状态查看。缺点就是这个过程只能实时查看不能记录,不利于综合分析。当然也有用zabbix监控nginx,只是既要写shell脚本又要在服务器各种配置,感觉略有麻烦,可移植性也不是很强。想到昨天用LoadRunner写的监控tomcat的脚本,灵机一动,既然如此,先启用http_stub_status_module,之后应该也能用LoadRunner脚本去监控这些参数吧。心动不如行动,走起~
一、启用http_stub_status_module模块
0、这个模块在nginx安装时是默认不会编译进去的,当然也可以确认下是否已启用,如果本来就已启用,那就不需要接下来这些步骤了。(可以用下面步骤 6 进行确认)
1、进入nginx源码目录,重新配置编译参数
./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module
2、重新编译安装
make && make install
3、重启nginx
pkill -9 nginx /usr/local/nginx/sbin/nginx
4、为了便于在网页上查看统计信息,在配置文件 nginx.conf 中加入
location /status { stub_status on; access_log off; allow 10.60.44.1;#允许哪个ip可以访问,如我的IP:10.60.44.1 }
该配置文件#为注释符
5、重新加载nginx
/usr/local/nginx/sbin/nginx -s reload
6、查看页面
http://ip/status
提示:ip为当前nginx环境的IP地址,如果不是使用80端口,还应加上端口号 如,http://ip:port/status
7、参数说明
- Active connections nginx正处理的活动链接数个数;重要
- server nginx启动到现在共处理了多少个连接。
- accepts nginx启动到现在共成功创建几次握手。
- handled requests nginx总共处理了几次请求。
- Reading nginx读取到客户端的 Header 信息数。
- Writing nginx返回给客户端的 Header 信息数。
- Waiting nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
Keep-alive的情况下,Waiting这个值等于 active-(reading + writing) 。
请求丢失数=(握手数-连接数) 可以看出,本次状态显示没有丢失请求。
8、为了使nginx能够响应足够多的请求,要保证系统可同时打开文件数量足够多
ulimit -n 20480
二、LoadRunner监控Ngnix脚本编写
1、脚本大致内容和思路跟监控Tomcat那个脚本差不多,点击下方连接查看
2、与监控tomcat脚本的差别
①nginx.conf 中已经配置了可访问的IP,所以在此IP下可以直接访问,不需要使用用户名和密码,注释掉web_set_user()内容即可;
②lr_think_time(3); 的作用,这个是采集时间间隔,一定要加,长久自定。且考虑到这个监控脚本的间隔时间,所以不宜和业务场景脚本放一起,建议单独设置脚本,可在控制台同时运行,或者在不同客户端同时段运行;
③accepts参数值的获取,由于这个参数的参数值前后都是变量值,左右边界不好界定,因此需要借助web_reg_save_param函数中"Ord=X"的属性,这里可以看出,如果(参数名和值)左右边界值都是空格的话,我们需要的参数值在符合条件的第8个位置。(注意,这个位置一定要按实际情况确认)
小贴士:ORD 说明第几次出现的左边界子串的匹配项才是需要的内容。关联函数中当不写ORD时,默认只取第一个(ORD=1)。如果有一个关联参数accepts,当ORD=ALL时,参数accepts变成了数组,如果想取第8项,应该用accepts_8,而不是accepts,否则关联会报错。也就是说如果想取第8项,有种方式,一种是ORD=8,另一种是 ORD=ALL,accepts_8
三、场景运行验证
1、在业务场景运行的同时设置一个用户的场景运行这个脚本。
2、生成这个脚本的场景分析文件。
3、添加图形查看:
(Average)
(Sum)
4、结合业务场景性能效果和ngnix参数配置、ngnix监控结果分析参数配置对应用性能的影响。