使用nmon服务器性能分析,使用Jmeter+nmon对服务器性能做压测与分析
使用 nmon 监控服务器性能
nmon 是一种在 AIX 与各种 Linux 操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon 所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过 nmon_analyzer 工具产生数据文件与图形化结果。
为了实时监控系统在一段时间内的使用情况并将结果记录下来,我们可以通过运行以下命令实现:
#./nmon_x86_64_linux -f-t -s 30 -c 180 -m /home/
n -f:按标准格式输出文件:_YYYYMMDD_HHMM.nmon;
n -t:输出中包括占用率较高的进程;
n -s 30:每30秒进行一次数据采集
n -c 180:一共采集180次
-m 生成的数据文件的存放目录。
输入命令回车后,将在/home目录生成一个hostname_timeSeries.nmon的文件,如果hosname为test1,生产的文件为:LS-HDP-MH-VM-173-188_161108_1412.nmon。
如果想停止该监控,需要通过“#ps –ef|grep nmon”查询进程号,然后杀掉该进程以停止监控。
通过sort命令可以将nmon结果文件转换为csv文件:
sort -A LS-HDP-MH-VM-173-188_161108_1412.nmon> LS-HDP-MH-VM-173-188_161108_1412.csv
执行完sort命令后即可在当前目录生产LS-HDP-MH-VM-173-188_161108_1412.csv文件。
使用 Jmeter 对接口进行压测
为了找出系统最大并发量,我采用逐步施压的方式发现在 2000 并发下系统比较稳定,没有出现连接超时的情况。逐步往上,到 2500 并发的时候开始出现连接超时的情况。通过性能监控和分析最终将瓶颈定位到 mongodb 的数据库连接上。
从上述结果分析可以看出服务器的瓶颈在 IO,通过 top 命令查看实时负载情况和进程占用情况发现 mongdb 的内存占有最高,再结合 Jmeter 返回的察看结果树的结果来看,出现了大量的连接超时的情况,预估原因在于 MongoDB 的最大连接数为默认值 819,前面连接的线程还没来得及释放后面进来的线程就在请求连接,于是导致连接超时。