本文档介绍 Linux 云服务器因 CPU 或内存占用率高导致无法登录等问题的排查方法和解决方案。
CPU 或内存使用率过高,容易引起服务响应速度变慢、服务器登录不上等问题。而引起 CPU 或内存使用率过高的原因可能由硬件因素、系统进程、业务进程或者木马病毒等因素导致。您可以使用 云监控,创建 CPU 或内存使用率阈值告警,当 CPU 或内存使用率超过阈值时,将及时通知到您。
Top:Linux 系统下常用的监控工具,用于实时获取进程级别的 CPU 或内存使用情况。以下图 top 命令的输出信息为例。
Top 命令的输出信息主要分为两部分,上半部分显示 CPU 和内存资源的总体使用情况:
下半部分以进程为维度显示资源的占用情况:
根据实际需求,选择不同的登录方式登录云服务器。
注意Linux 云服务器处于 CPU 高负荷状态时,可能出现无法登录状态。
注意Linux 云服务器处于 CPU 高负荷状态时,控制台可以正常登录。
执行以下命令,查看系统负载,并根据 %CPU
列与 %MEM
列,确定占用较多资源的进程。
top
根据任务管理器中的进程,分析与排查问题,以采取对应解决方案。
k
。注意若按 Enter 后出现
kill PID 23 with signal [15]:
,则继续按 Enter 保持默认设定即可。
Send pid 23 signal [15/sigterm]
的提示信息,按 Enter 确认即可。Load average 是 CPU 负载的评估,其值越高,说明其任务队列越长,处于等待执行的任务越多。
通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高。
执行以下命令,查看进程状态,并检查是否存在 D 状态进程。如下图所示:
ps -axjf
若出现较多 D 状态进程,可通过恢复该进程依赖资源或重启系统进行解决。说明D 状态指不可中断的睡眠状态。该状态进程无法被杀死,也无法自行退出。
Linux 系统通过分页机制管理内存的同时,将磁盘的一部分划出来作为虚拟内存。而 kswapd0 是 Linux 系统虚拟内存管理中负责换页的进程。当系统内存不足时,kswapd0 会频繁的进行换页操作。换页操作非常消耗 CPU 资源,导致该进程持续占用高 CPU 资源。
执行以下命令,找到 kswapd0 进程。
top
观察 kswapd0 进程状态。
若持续处于非睡眠状态,且运行时间较长并持续占用较高 CPU 资源,请执行 步骤3,查看内存的占用情况。
执行 vmstat
,free
,ps
等指令,查询系统内进程的内存占用情况。
根据内存占用情况,重启系统或终止不需要且安全的进程。如果 si,so 的值也比较高,则表示系统存在频繁的换页操作,当前系统的物理内存已经不能满足您的需要,请考虑升级系统内存。
本页内容是否解决了您的问题?