添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Windows实例中CPU使用率较高问题的排查及解决方法

Windows实例中CPU使用率较高问题的排查及解决方法

本文主要介绍 Windows 实例中 CPU 使用率较高问题的排查及解决方案。

问题现象

Windows 实例中 CPU 使用率较高,即 CPU 使用率≥80%。

问题原因

CPU 使用率较高可能有以下原因。

  • 实例遭到病毒木马入侵。

  • 实例中第三方杀毒软件运行。

  • 实例中应用程序异常、驱动异常、高 I/O 使用率或高中断处理的应用程序。

解决方案

步骤一:定位问题

通过微软工具(任务管理器、资源监视器等)抓取系统 Full Memory Dump,来定位 CPU 使用率过高的问题。在流量大的情况下,您还可以使用 Wireshark 抓取一段时间的网络包,分析流量使用情况。

本文以 Windows Server 2022 系统资源监视器为例,介绍如何定位 CPU 使用率较高的问题。其他常见工具,请参见 常见工具

  1. 使用 VNC 远程连接轻量应用服务器。具体操作,请参见 通过救援远程连接(控制台)

  2. 在桌面底部单击 开始 菜单,选择 运行

  3. 运行 框中输入 perfmon -res ,单击 确定

    image

  4. 资源监视器 页面中,查看各进程是否有 CPU 使用率过高的现象。

    image

  5. 针对占用 CPU 资源较高的进程,查看对应的进程 ID 和进程的程序名。

  6. 打开任务管理器,任务管理器的 详细信息 页签下,找到之前资源监视器查看到的异常进程名和对应的 PID。右键单击进程名称,选择 打开文件所在的位置(O) ,查看进程是否为恶意程序。

步骤二:分析处理

判断影响 CPU 使用率过高的进程属于正常进程或是异常进程,并按照下述相应步骤处理。

可能原因

具体操作

正常进程

一般情况下,当频繁访问业务,或由于 Windows 自身服务(更新服务等)都可能会占用较高网络流量和 CPU 。

说明
  • Windows Server 2008 Windows Server 2012 实例建议内存配置在 2 GiB 或者 2 GiB 以上。

  • 在使用 Windows Server 2012 1 vCPU 1 GiB 规格的实例时,Windows Update 服务会自动更新,实例的 CPU 使用率也会突然升高,这是正常现象。

  • 检查后台是否有执行 Windows Update 的行为。

  • 建议在服务器上安装杀毒软件进行杀毒。如有安装杀毒软件,请检查 CPU 使用率较高时,杀毒软件是否在后台执行扫描操作。如果可能,请升级杀毒软件到最新版本,或者删除杀毒软件。

  • 检查该服务器内应用程序是否有大量的磁盘访问、网络访问行为或高计算需求。通过尝试升配实例规格的方式,使用更多核数或内存的规格来解决资源瓶颈问题。更多信息,请参见 升级配置

  • 若自身服务器配置较高,再去升级配置已无太大意义。架构方面也并非是服务器配置越高就越好。此时,您需要尝试进行应用分离,通过不同的服务器去承载不同的应用,同时对相关程序进行优化。

    比如数据库完全通过 RDS 来承载,减轻服务器本身的资源消耗和服务器内部大量的调用。而程序优化方面,您可以根据自身的配置状况进行调整,具体的操作有调整连接数、缓存配置、Web 和数据库调用时的各项参数等。

异常进程

对于 CPU 异常使用率过高的情况,可能是被恶意病毒、木马入侵导致的。有时三方恶意程序可能会利用操作系统的 svchost.exe 或者 Tcpsvcs.exe 来伪装,引起高 CPU 的占用。您需要手动对异常进程进行查杀。

说明

若您无法判断进程是否为病毒或木马,建议将进程名称在网上进行搜索后确认。另外,建议您进行进程删除操作前,创建快照完成备份。具体操作,请参见 创建快照

  • 使用商业版杀毒软件,或使用微软免费安全工具 Microsoft Safety Scanner ,在安全模式下进行扫描杀毒。

  • 运行 Windows Update 来安装最新的微软安全补丁。

  • 使用 MSconfig 禁用所有非微软自带服务驱动,检查问题是否再次发生,具体操作请参考 如何在 Windows 系统中执行干净启动

  • 若服务器或站点遭受 DDoS 攻击或 CC 攻击等,短期内产生大量的访问需求。您可以登录 云安全中心 ,查看云安全中心中的防护 DDoS 攻击是否调整好阈值,并核实是否开启 CC 防护。如果攻击没有触发到阈值,云安全中心没有清洗,可以联系售后协助开启清理。

常见工具

以下是关于 Windows 系统中定位 CPU 使用率过高问题工具的简要说明。

任务管理器

任务管理器可以直观查看应用程序列表,定位占用 CPU 较高的应用程序,如下是任务管理器页面。

image

在性能页面检查 CPU 使用率时,右键单击 CPU 使用率图示,单击 将图形更改为(H) > 逻辑处理器(L)

如下图显示了 2 个逻辑 CPU 的使用率。

image

当单个进程的 CPU 使用率飙升至接近 100%时,而其它进程的 CPU 使用率变化不大,则可能是网络 I/O 处理造成的。

资源监视器

资源监视器可以直观查看 CPU 使用率,还可以通过句柄和模块搜索对应的进程。

image

Process Explorer

Process Explorer 是一款 Microsoft Sysinternals 工具,通过配置正确的 Symbols,检查对应应用程序的线程调用的 Call Stack,用以定位可能的问题驱动。下载 Process Explorer 工具,请参见 Process Explorer

如下图是 Process Explorer 工具使用页面。

image

性能监视器

性能监视器(Performance Monitor)是 Microsoft 专业收集各个组件性能计数器的工具。对于系统 CPU 资源消耗,有多个 Counter 来检查。

Performance 有如下三个核心参数。

  • \Processor(_Total)\% Processor Time :CPU 执行非空闲线程的时间百分比。 \Processor(_Total)\% Processor Time = \Processor(*)\% User Time + \Processor(*)\% Privileged Time .

  • \Processor(*)\% User Time :表示处理器用于执行程序代码的时间消耗,可以确定哪个应用程序或函数调用消耗了较多的时间。

  • \Processor(*)\% Privileged Time :应用程序在内核中执行系统调用(例如驱动、IRP,上下文切换等)操作的时间。如果操作系统花费多于 30%的时间在 Privileged Time ,则说明实例正在进行高 I/O 吞吐相关的操作。

    % Privileged Time 很高时,需要进一步检查 % DPC Time % Interrupt Time 以及 Context Switches/sec 的情况。