已接入CDN的网站迁移至Windows实例后访问该站点提示连接被拒绝

问题描述

已接入CDN的网站迁移到另外一台Windows实例之后,该服务器上的所有站点均无法正常访问,访问时提示连接被拒绝。经过检查,发现了下列几点特征:

  • 该服务器中的443端口正常开启,并且该服务器的负载和带宽没有明显变化。
  • 该服务器使用宝塔(BT)面板搭建网站。
    说明:BT面板默认采用Apache提供Web服务。
  • Apache的error_log中存在下列错误信息。
    Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

问题原因

通过Apache的error_log可以判断,该服务器没有线程来处理请求。详情请参见更多信息

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

请参考下列步骤进行排查。

  1. 登录该服务器。
  2. 检查Apacheconf/httpd.conf配置文件中的ThreadsPerChild参数值是否为64
    说明:Windows系统中Apache的ThreadsPerChild参数默认值为64。
  3. 如果ThreadsPerChild参数值为64,请参考下列内容,修改该参数值为512。
    <IfModule mpm_winnt_module>
    ThreadsPerChild 512 
    MaxRequestsPerChild 0
    </IfModule>
    注意:此处的512并非推荐值,请根据服务器的负载和访问情况进行调整。更多有关该参数的信息,请参见Apache MPM通用指令
  4. 保存并重启Apache服务。
  5. 检查网站是否可以正常访问。

更多信息

Windows系统中Apache程序使用mpm_winnt模块,该模块默认的线程数为64。当Web请求数超过该线程数时,Apache将无法正常提供服务。详细内容请参见Apache MPM模块

适用于

  • 云服务器ECS
  • 轻量应用服务器
阿里云首页 云服务器 ECS 相关技术圈