You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows服务器LSASS.exe高CPU占用排查及资源规划咨询

环境与问题背景

我们有两台部署于AWS的Windows Server 2012 R2服务器(非域控制器,IIS 8.5),托管3个ASP.NET站点与1个WordPress站点,配置如下:

  • 服务器1:8GB内存、2vCPU(2.40GHz E5-2676 v3)
  • 服务器2:4GB内存、2vCPU(2.30GHz E5-2686 V4)

核心症状

  • LSASS.exe(本地安全授权进程)时常占用极高CPU,整体CPU使用率最高达100%;停止IIS服务后CPU使用率降至10%以下,重启IIS站点则再次升高。
  • 已排除Active Directory关联问题(未启用AD角色),正在通过KB更新升级lsass.exe/lsasrv.dll版本(当前版本6.3.9600.17415)。

已完成排查

  • 逐一启停站点未定位到特定触发站点;IIS日志显示LSASS高CPU时段流量激增:服务器1从约1000请求/分钟升至4500+请求/分钟,服务器2从500-1000请求/分钟升至2200+请求/分钟。
  • 事件日志存在4625(无效登录尝试)、4797(空白密码检查)、36874/36888(SChannel/TLS错误)等事件,但正常时段也有记录;IIS、FTP日志无异常,SQL日志出现18056错误(客户端无法复用会话)。
  • 服务器启用Symantec Endpoint Protection多项防护功能及Windows防火墙,IIS采用匿名认证;AWS Lightsail基础DDoS防护已启用,服务器1更新至KB2896496(2018年),服务器2更新至KB4338331(2018年)。
  • 2022-08-05通过Debug Diagnostic工具分析lsass.exe dump,发现线程处理lsasspirpc端点的LRPC入站调用,堆栈信息:
*ntdll!NtWaitForWorkViaWorkerFactory+a      
ntdll!TppWorkerThread+746      
kernel32!BaseThreadInitThunk+22      
ntdll!RtlUserThreadStart+34*
  • 2022-09-01拟升级服务器规格缓解高CPU问题;2022-09-08已更新服务器1CPU规格。

负载测试结果(Jmeter:1000用户、10秒Ramp Up、循环1次)

  1. Windows Server 2012 R2(IIS8.5)的HTTPS ASPX站点中,LSASS.exe占用约26%CPU;
  2. 同配置Windows Server 2019(IIS10)的相同站点,LSASS.exe CPU占比一致;
  3. Apache托管的HTTPS站点未使用LSASS.exe。

问题解答

1. 该测试负载下LSASS.exe的26%CPU占用是否正常?

在IIS+HTTPS的Windows环境中,LSASS会参与安全上下文的初始化与验证——即使是匿名认证,也需要生成匿名用户的安全令牌,这是Windows安全子系统的固有开销。而Apache的SSL处理完全由自身模块完成,不依赖LSASS,因此两者存在差异属于正常现象。

在1000用户短时间负载的测试场景下,2vCPU机器上LSASS占用26%属于可接受的预期范围,且Windows Server 2012 R2与2019的结果一致,说明该占比是IIS架构的特性,而非特定系统版本的问题。但如果生产环境是持续高流量下的长期高占用,则需要进一步排查优化空间。

2. 如何提前计算不同CPU规格下各应用的CPU使用率?

可以通过以下三种实用方法估算:

  • 基准换算:先在当前服务器记录不同负载下各进程(LSASS、W3WP、SQL等)的CPU占比基准,再根据目标CPU的核心数、主频对比换算。例如当前2vCPU(2.4GHz)下LSASS占26%,目标为4vCPU(2.5GHz),理论占比约为(26% * 2*2.4)/(4*2.5) ≈ 12.5%,实际需预留10-15%的多核调度误差。
  • 性能计数器建模:用PerfMon采集关键计数器(如Process\% User Time针对LSASS、W3WP),结合负载指标(请求数、并发数)建立线性关联模型,比如每增加1000请求/分钟,LSASS占用提升X%,再根据目标CPU性能调整模型参数。
  • AWS实例性能对比:参考AWS官方的实例性能基准分数,将当前实例与目标实例的分数做比值,相同负载下CPU占用理论上与分数比值成反比。例如当前实例CPU基准分为1000,目标为2000,则相同负载下CPU占用约为原来的50%。

3. 除升级lsass.exe版本外,还有哪些排查方向可定位LSASS.exe高CPU原因?

  • 追踪LRPC调用源:针对dump中发现的lsasspirpc端点,用Process Monitor跟踪LSASS的RPC调用,定位发起高频调用的进程(如W3WP、Symantec防护进程),排查是否存在异常调用逻辑。
  • 分析SSL/TLS握手异常:统计高CPU时段的SChannel错误频率,确认是否存在大量TLS握手失败(如客户端协议版本不兼容、证书验证失败)——这类无效请求会导致LSASS反复处理安全验证。可启用IIS的SSL详细日志,记录握手过程的具体错误。
  • 排查安全软件影响:Symantec Endpoint Protection的实时防护、行为监控模块可能Hook LSASS进程,产生额外CPU开销。可临时禁用SEP的部分功能,观察LSASS占用变化,逐步定位触发模块。
  • 验证IIS模拟配置:即使是匿名认证,若站点impersonation配置异常(如强制使用特定账户模拟),会导致LSASS频繁生成安全令牌。可临时关闭impersonation,测试CPU占用变化。
  • 解决SQL会话复用问题:SQL日志的18056错误(客户端无法复用会话)会导致频繁重建数据库连接,若连接使用Windows身份验证(含本地账户),会触发LSASS的凭据验证。检查ASP.NET站点的连接池配置,确保连接复用正常,减少验证次数。
  • 监测异常流量:高CPU时段流量激增,需排查是否存在恶意扫描、重复无效请求(如目录遍历、高频匿名请求)——这类请求会触发LSASS的安全检查逻辑。可用Wireshark抓包分析请求特征。
  • 简化防火墙规则:复杂的Windows防火墙规则(如大量入站/出站过滤)可能让LSASS参与规则验证,尤其是IIS相关流量。临时简化规则,观察CPU占用是否下降。

内容的提问来源于stack exchange,提问作者IT Researcher143

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 06:54:34