CPU 使用率过高,容易引起服务响应速度变慢、服务器登录不上等问题。可以创建 CPU 使用率阈值告警,当 CPU 使用率超过阈值时,将及时通知管理员
CPU 使用率过高排查的步骤大致为:定位消耗 CPU 的具体进程,对 CPU 占用率高的进程进行分析。如果为异常进程,可能是病毒或木马导致,可以自行终止进程,或者使用安全软件进行查杀;如果是业务进程,则需要分析是否由于访问量变化引起,是否存在优化空间;
下面将介绍 Linux 系统下如何定位出 CPU 使用率过高的进程。
定位工具介绍:top 命令
top:Linux 系统下常用的监控工具,用于实时获取进程级别的 CPU 使用情况。下图是 top 命令的输出信息。
上半部分显示 CPU 和内存资源的总体使用情况:
行:系统当前时间,当前登录用户个数以及系统负载。
第二行:系统总进程数、运行中进程数、休眠、睡眠和僵尸进程数量。
第三行:CPU 当前使用情况。
第四行:内存当前使用情况。
第五行:swap 空间当前使用情况。
下半部分以进程为维度显示资源的占用情况。
PID:进程 ID。
USER:进程所有者。
PR:进程优先级 NI:NICE 值,NICE 值越小,优先级越高。
VIRT:使用的虚拟内存大小,单位 KB。
RES:当前使用的内存大小,单位 KB。
SHR:使用的共享内存的大小,单位 KB。
S:进程状态。
%CPU:更新时间间隔内进程所使用的 CPU 时间的百分比。
%MEM:更新时间间隔内进程所使用的内存的百分比。
TIME+:进程使用的 CPU 时间,到 0.01s。
COMMAND:进程名称。
问题定位及处理
使用工具定位 CPU 使用率高的进程
前面介绍了 top 工具,下面介绍如何利用该工具定位出 CPU 使用率高的进程。
通过 SSH 或者 VNC 方式登录服务器
说明:CPU 使用率过高,容易引起服务器登录不上,此时可以尝试使用 VNC 登录的方式。
输入 top 命令查看系统负载。
输入大写 P,进程按 CPU 使用率降序排列;通过排序,可以方便得获得占用 CPU 资源较多的进程,进行进一步的分析。
分析占用 CPU 高的进程。
如果为业务进程,建议分析业务程序是否有优化空间,进行优化或者提升实例的资源配置。
如果为异常进程,实例可能中毒,可以自行终止进程、使用安全软件进行查杀或者进行数据备份后,重装系统。
使用 top 命令结束进程
键入小写 k,输入想要结束进程的 pid(默认为排序的进程),回车。
操作成功,界面会出现 Send pid 984 signal [15/sigterm] 的提示信息,回车确认即可。