分析思路
压测结果分析基本原则:
由外而内、由表及里、层层深入
整体分析思路如下图所示
其中客户端问题概率较小。主要分析重点在网络问题及服务端问题上面。
网络问题:
负载均衡:在动态负载均衡器上设置动态分发负载的机制后,如果发现某个应用服务器上的硬件资源已经达到极限,动态负载均衡器会将后续请求发送到其他负载较轻的应用服务器上。此时若发现动态负载均衡器没有起到作用,则可以认为是网络瓶颈;
服务端问题:
操作系统:当出现物理内存不足时,需要设置虚拟内存,若设置不合理,虚拟内存的交换效率就会降低,从而导致响应时间增加;其他参数如缓冲区大小、系统文件描述符等都会对服务器性能产生较大影响;
SQL效率低下:主要原因有未建索引或使用性能低的索引、嵌套查询、产生锁等待或死锁;
中间件:主要包含线程是否够用,是否存在线程阻塞,JDBC连接池是否够用,GC/FULL GC是否频繁及垃圾回收的时间等因素;
硬件方面:CPU资源利用率较高主要看消耗在哪些进程、系统调用的资源消耗,内存问题主要看某个进程占用内存及虚拟内存交换swap,硬盘方面主要是繁忙率及传输内容大小上。
性能监控常用命令:
虚拟内存统计:vmstat。主要对操作系统内存、swap、io、cpu信息进行监控;
进程资源占用:top。top命令提供了实时的对系统处理器的状态监视,显示系统中CPU最“敏感”的任务列表;
系统负载:uptime。可以看到系统1分钟、5分钟和15分钟内的平均负载,一般这三个值不能大于cpu个数,如果长期大于cpu个数说明系统很繁忙负载高;
网络相关信息:netstat。用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况;
内存相关信息:free。显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer;
sar:目前 Linux上最为全面的系统性能分析工具之一。可统计出文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等;
磁盘I/O:iostat。对系统的磁盘I/O操作进行监控。汇报磁盘活动统计情况,同时也会汇报出CPU使用情况