Windows Server 2012 R2高并发连接下HTTP/HTTPS异常及LSASS问题求助
问题分析与解决方案
首先,咱们先拆解你遇到的现象背后的核心原因:
- HTTPS服务先失效的关键在于TLS握手过程严重依赖
lsass.exe进程——这个进程负责处理证书验证、身份认证等安全操作,每个HTTPS连接的建立都需要它参与,资源消耗远高于纯HTTP连接。当连接数达到26000时,lsass.exe的CPU占用率达到20%-25%,说明它已经成为HTTPS服务的瓶颈,导致新的HTTPS请求无法及时响应。 - HTTP能撑到36000连接才失效,是因为它不需要TLS握手,资源消耗更低,直到系统TCP连接数或IIS处理能力触达上限才会出问题。
接下来分两种情况给你具体方案:
一、先尝试提升单服务器的连接承载能力
在考虑负载均衡之前,你可以先通过系统和IIS的优化调整,看看能不能突破当前的连接限制:
1. 调整TCP/IP相关注册表参数(提升系统级连接数)
打开注册表编辑器(regedit),修改以下项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters- 设置
MaxUserPort为65534(默认是5000,扩大可用临时端口范围) - 设置
TcpTimedWaitDelay为30(缩短TIME_WAIT状态连接的保留时间,加快端口回收) - 新建
DWORD值TcpNumConnections并设为65534(提升系统最大TCP连接数)
- 设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters- 设置
MaxConnections为100000(提升HTTP.sys的最大连接数,默认可能限制较低)
- 设置
修改后重启服务器生效。
2. 优化TLS配置,降低lsass.exe的负载
这是解决HTTPS瓶颈的核心:
- 启用TLS会话复用:在IIS管理器中进入站点的SSL设置,勾选“启用会话状态”,重复连接可复用之前的TLS会话,避免每次重新握手,大幅减少
lsass.exe的工作量。 - 禁用不必要的安全验证:如果站点不需要客户端证书认证,务必将“要求客户端证书”设为“忽略”,否则
lsass.exe会额外处理大量证书验证请求。 - 增大TLS缓存:在注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Parameters下,新建DWORD值ServerCacheSize并设为10000或更高,提升TLS会话缓存容量,增强复用效率。
3. 优化IIS与服务器资源
- 检查IIS站点连接限制:进入站点“高级设置”,确保“最大连接数”设为
无限制(默认无限制,但可能被手动修改)。 - 升级硬件:如果当前服务器CPU还有余量(
lsass.exe仅占20%-25%),可增加CPU核心数——lsass.exe是多线程进程,更多核心能直接提升它的处理能力;同时确保内存充足,避免因内存不足拖慢连接处理。
二、什么时候需要添加负载均衡?
如果做完上述优化后,仍然无法达到业务所需的连接数,或者lsass.exe的CPU占用率持续攀升到80%以上(触达瓶颈),那么负载均衡是必然选择:
- 负载均衡可将HTTP/HTTPS流量分散到多台服务器,每台仅处理部分连接,单台的
lsass.exe负载和TCP连接压力都会大幅降低。 - 对于HTTPS场景,推荐在负载均衡器上做TLS终止(SSL卸载),后端服务器仅处理HTTP流量,彻底规避
lsass.exe的瓶颈——这是大型HTTPS站点的常用优化方案。
总结建议
- 先按上述步骤优化单服务器的TCP、TLS和IIS配置,测试连接数是否能提升,同时观察
lsass.exe的CPU变化。 - 如果优化后仍无法满足需求,或未来连接数还会持续增长,直接部署负载均衡集群扩展服务能力。
内容的提问来源于stack exchange,提问作者Mohamed Magdy
相关产品推荐
相关产品推荐

