以下分析是站在Java工程师的角度来分析的。
分析CPU的繁忙程度,两个指标:系统负载和CPU利用率
系统负载:在Linux系统中表示,一段时间内正在执行进程数和CPU运行队列中就绪等待进程数,以及非常重要的休眠但不可中断的进程数的平均值(具体load值的计算方式,有兴趣可以自行深究,这里不深究)。说白了就是,系统负载与R(Linux系统之进程状态)和D(Linux系统之进程状态)状态的进程有关,这两个状态的进程越多,负载越高。
查看系统负载,见top命令:第1部分。
- **load值持续大于1.0**,解决问题已迫在眉睫;
- **load值持续大升高达到5.0**,表示各种请求几乎得不到响应,机器几近崩溃; 对于多核机器,则需要根据CPU个数来判断系统负载是否过高。如,若认为0.7算是单核机器负载的安全线的话,则四核机器的负载最好保持在3(4*0.7 = 2.8)以下。
查看CPU利用率,见top命令:第3部分和第5部分。
查看I/O读写状况,见iostat命令。
netstat分析:
tcpdump分析:
tcpdump通过抓指定端口的数据包,可以分析指定进程的数据包流量。
通过抓包工具tcpdump及网络状态查看命令netstat可以帮助定位客户端、服务端相关网络问题,在日志匮乏或性能统计信息不足以分析服务器问题时,可以辅助分析服务器相关模块性能。 查看网络连接状况,见netstat命令和tcpdump命令。