服务器性能诊断和CPU占用过高处理
文章目录
- 一、服务器性能诊断思路
- 1.1 查看系统性能
- 1.2 查看 CPU 性能
- 1.3 查看内存使用情况
- 1.4 查看磁盘情况
- 1.5 查看磁盘 IO
- 1.6 查看网络 IO
- 二、CPU占用过高分析思路和定位
一、服务器性能诊断思路
1.1 查看系统性能
top
:实时显示进程的动态
系统性能命令精简版update
load average
平均值大于0.6说明系统负载出现了问题。
1.2 查看 CPU 性能
使用vmstat
查看CPU
性能,命令vmstat -n 2 3
,第一个参数是采样的时间间隔数单位是秒,第二个参数是采样的次数。
r
:运行等待CPU
时间片的进程数,原则上1核的CPU
运行队列不要超过2,整个系统的运行队列不能超过总核数的2倍,否则代表系统压力过大。us
:用户进程消耗CPU
时间百分比,us值高,用户进程小号CPU
时间多,如果长期大于50%,优化程序;sy
:内核进程消耗的CPU
百分比;
查看所有cpu
核信息命令mpstat
,需安装sysstat
每个进程使用cpu
的用量分解信息:
1.3 查看内存使用情况
使用free -m
查看内存的使用情况,单位为MB
- 应用程序可用内存/系统物理内存>70%内存充足;
- 应用程序可用内存/系统物理内存<20%内存不足,需要增加内存;
- 20%<应用程序可用内存/系统物理内存<70%内训基本够用。
1.4 查看磁盘情况
查看磁盘剩余空间数:df -h
1.5 查看磁盘 IO
1.6 查看网络 IO
二、CPU占用过高分析思路和定位
① 先用 top 命令找出 CPU 占比最高的
② ps -ef 或者 jps 进一步定位
③ 定位到具体线程
命令:ps -mp 进程id -o THREAD,tid,time
参数说明:
-m
:显示所有的线程-p
:pid
进程使用cpu
的时间-o
:该参数后是用户自定义格式
④ 使用 jstack 进行分析
命令:jstack进程ID | grep(16进制线程ID小写英文) -A60
还没有评论,来说两句吧...