云产品指标

文档中心 > 云监控 > 故障处理 > 云服务器 CPU 或内存占用过高

云服务器 CPU 或内存占用过高

最近更新时间:2020-05-19 17:58:30

简介

本文档介绍因云服务器 CPU 或内存占用过高,导致无法登录 Windows 和 Linux 云服务器实例的排查方法和解决方案。

排查思路

  1. 登录实例定位消耗 CPU 或内存的具体进程。
  2. 对 CPU 或内存占用率高的进程进行分析。
    • 如果是异常进程,可能是病毒或木马导致,您可以自行终止进程,或者使用安全软件进行查杀。
    • 如果是业务进程,则需要分析是否由于访问量变化引起,是否存在优化空间。
    • 如果是腾讯云组件进程,请 提交工单 联系我们进行进一步定位处理。

故障定位及处理

针对 Windows 服务器

使用 VNC 方式登录云服务器

说明:

由于云服务器负载高时会导致无法建立远程连接,推荐 使用 VNC 方式登录 Windows 实例

  1. 登录 云服务器控制台
  2. 在实例的管理页面,找到目标云服务器实例,单击【登录】。如下图所示:
  3. 在弹出的 “登录Windows实例” 窗口中,选择【其它方式(VNC)】,单击【立即登录】,登录云服务器。
  4. 在弹出的登录窗口中,选择左上角的 “发送远程命令”,单击 Ctrl-Alt-Delete 进入系统登录界面。如下图所示:

查看进程占用情况

  1. 在云服务器中,右键单击 “任务栏”,选择【任务管理器】。如下图所示:
  2. 在打开的 “任务管理器” 中,即可查看资源占用情况。如下图所示:
    说明:

    您可单击 CPU 或内存,以升序/降序对进程进行排序。

进程分析

根据任务管理器中的进程,分析与排查问题,以采取对应解决方案。

占用大量 CPU 或内存资源的进程为系统进程
如果您发现系统进程占用了大量 CPU 或内存资源,请排查以下内容:

  1. 检查进程名称。
    部分病毒会使用与系统进程相似的名称,例如 svch0st.exe、explore.exe、iexplorer.exe 等。
  2. 检查进程对应的可执行文件的所在位置。
    系统进程一般位于 C:\Windows\System32 目录下,并且会有完善的签名和介绍。您可以在任务管理器中,右键单击待查看的进程,选择【打开文件位置】,即可查看具体可执行文件的位置。例如 svchost.exe。如下图所示:
    • 如果进程位置不在 C:\Windows\System32 目录下,则表示该云服务器可能中了病毒,请手动或者使用安全工具进行查杀。
    • 如果进程位置在 C:\Windows\System32 目录下,请重启系统或关闭不需要且安全的系统进程。

常见的系统进程如下:

  • System Idle Process:系统空间进程,显示 CPU 空闲时间百分比
  • system:内存管理进程
  • explorer:桌面和文件管理
  • iexplore:微软的浏览器
  • csrss:微软客户端/服务端运行时子系统
  • svchost:系统进程,用于执行 DLL
  • Taskmgr:任务管理器
  • Isass:本地安全权限服务

占用大量 CPU 或内存资源的进程为异常进程
如果您发现一些命名很奇怪的进程占用了大量 CPU 或内存资源,则可能为木马病毒进程,例如 xmr64.exe(挖矿病毒)等。建议您使用搜索引擎进行搜索,确认是否为木马病毒进程。

  • 如果是木马病毒进程,请使用安全工具进行查杀,必要时考虑备份数据,重装系统。
  • 如果不是木马病毒进程,请重启系统或关闭不需要且安全的进程。

占用大量 CPU 或内存资源的进程为业务进程
如果您发现业务进程占用了大量 CPU 或内存资源,例如 IIS、HTTPD、PHP、Java 等,建议进一步分析。
例如,判断当前业务量是否较大。

  • 若业务量较大,建议您 升级服务器配置;若不升级服务器配置,可以考虑业务程序是否存在优化空间,请进行优化。
  • 若业务量不大,则需要进一步结合业务报错日志来分析。例如,参数配置不当导致空耗资源。

占用大量 CPU 或内存资源的进程为腾讯云组件进程

提交工单 联系我们进行进一步定位处理。

针对 Linux 服务器

登录云服务器

根据实际需求,选择不同的登录方式登录云服务器。

  • 通过第三方软件远程登录 Linux 云服务器。

    注意:

    Linux 云服务器处于 CPU 高负荷状态时,可能出现无法登录状态。

  • 使用 VNC 登录 Linux 实例

    注意:

    Linux 云服务器处于 CPU 高负荷状态时,控制台可以正常登录。

查看进程占用情况

执行以下命令,查看系统负载,并根据 %CPU 列与 %MEM 列,确定占用较多资源的进程。

top

分析进程

根据任务管理器中的进程,分析与排查问题,以采取对应解决方案。

  • 如果是业务进程占用了大量 CPU 或内存资源,建议分析业务程序是否有优化空间,进行优化或者 升级服务器配置
  • 如果是异常进程占用了大量 CPU 或内存资源,则实例可能中毒,您可以自行终止进程或者使用安全软件进行查杀,必要时考虑备份数据,重装系统。
  • 如果是腾讯云组件进程占用了大量 CPU 或内存资源,请 提交工单 联系我们进行进一步定位处理。
    常见的腾讯云组件有:
    • sap00x:安全组件进程
    • Barad_agent:监控组件进程
    • secu-tcs-agent:安全组件进程

终止进程

  1. 根据分析的占用资源的进程情况,记录需要终止的进程 PID。
  2. 输入 k
  3. 输入需要终止进程的 PID ,按 Enter。如下图所示:
    此处以终止 PID 为23的进程为例。
    注意:

    若按 Enter 后出现 kill PID 23 with signal [15]:,则继续按 Enter 保持默认设定即可。

  4. 操作成功后,界面会出现Send pid 23 signal [15/sigterm] 的提示信息,按 Enter 确认即可。

其它相关故障

CPU 空闲但高负载情况处理

问题描述

Load average 是 CPU 负载的评估,其值越高,说明其任务队列越长,处于等待执行的任务越多。
通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高。

处理办法

执行以下命令,查看进程状态,并检查是否存在 D 状态进程。如下图所示:

ps -axjf

说明:

D 状态指不可中断的睡眠状态。该状态进程无法被杀死,也无法自行退出。

若出现较多 D 状态进程,可通过恢复该进程依赖资源或重启系统进行解决。

swapd0 进程占用 CPU 较高处理

问题描述

Linux 系统通过分页机制管理内存的同时,将磁盘的一部分划出来作为虚拟内存。而 kswapd0 是 Linux 系统虚拟内存管理中负责换页的进程。当系统内存不足时,kswapd0 会频繁的进行换页操作。换页操作非常消耗 CPU 资源,导致该进程持续占用高 CPU 资源。

处理办法

  1. 执行以下命令,找到 kswapd0 进程。
    top
  2. 观察 kswapd0 进程状态。
    若持续处于非睡眠状态,且运行时间较长并持续占用较高 CPU 资源,请执行如下 步骤3,查看内存的占用情况。
  3. 执行 vmstatfreeps 等指令,查询系统内进程的内存占用情况。
    根据内存占用情况,重启系统或终止不需要且安全的进程。如果 si,so 的值也比较高,则表示系统存在频繁的换页操作,当前系统的物理内存已经不能满足您的需要,请考虑升级系统内存。
目录