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

Apache服务器中大量Connection to Child连接是否会拖慢服务器?

问题描述

我在Apache服务器上运行一个简单的Web应用,未修改代码或配置的情况下,所有请求约30秒后均返回500 Error。同时发现SSH和SFTP连接服务器时异常缓慢,但登录后操作恢复正常。我已通过top和htop检查CPU与内存使用情况,结果均正常。此外,Apache的error.log文件中出现数千条来自同一未知IP的如下日志:

[ssl:info] [pid ] [client xxx.xx.xxx.xxx:xxxxxx] AH0: Connection to child n established

我尝试重启Apache服务器,但问题未解决。请问此类连接是否会拖慢服务器?


解答

这类连接绝对会拖慢服务器,本质是典型的连接耗尽攻击,具体原因和解决思路如下:

核心原因

Apache依赖子进程处理客户端连接,当单个IP持续建立大量SSL连接却不完成完整请求交互时:

  • Apache可用子进程会被快速耗尽,合法请求无法获取处理进程,最终超时返回500错误。
  • 服务器TCP连接数达到上限,SSH/SFTP这类依赖新TCP连接的服务在握手阶段被阻塞,表现为连接缓慢;但登录后已有连接不受影响。
  • top/htop仅监控CPU和内存,无法直接体现网络连接资源(文件句柄、TCP端口)被占满的情况,这才是问题根源。

验证方法

用以下命令确认连接耗尽状态:

  • 查看该IP的活跃连接数:
    netstat -ntu | grep xxx.xx.xxx.xxx | wc -l
    
  • 检查Apache子进程数是否触达配置上限(由MaxRequestWorkers控制):
    ps aux | grep apache2 | wc -l
    

紧急解决步骤

  1. 临时封禁恶意IP:
    iptables环境:
    iptables -A INPUT -s xxx.xx.xxx.xxx -j DROP
    
    firewalld环境:
    firewall-cmd --add-rich-rule='rule family="ipv4" source address="xxx.xx.xxx.xxx" reject' --permanent
    firewall-cmd --reload
    
  2. 调整Apache连接参数:
    在Apache配置文件中添加/修改以下规则,重启服务生效:
    Timeout 30
    KeepAliveTimeout 5
    MaxKeepAliveRequests 100
    
  3. 长期防护:
    • 启用Apache的mod_evasive或mod_security模块,配置IP访问频率限制。
    • 用防火墙限制单IP并发连接数:
      iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 10 -j REJECT
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:33:18