我有一个具有大量资源的专用 Apache 服务器。
- 内存——64GB
- 核心 - 20
- 使用 CentOS 6.7 x64
和
我运行 Magento 应用程序,以 MySQL 作为数据库引擎,该引擎也部署在单独的资源丰富的专用服务器上。
网站运行一个月以来一直很好,但突然开始出现错误,尽管它没有负载/流量-
mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper
浏览器出现 503 服务暂时不可用错误。
因此,我按照以下步骤摆脱它(但实际上都没有起作用):
我增加了 fcgid.conf 中的“FcgidMaxProcesses”值并重新启动了 apache,但没有任何变化。错误仍然存在。
我检查了文件所有权和权限
755 阿帕奇 阿帕奇 /var/run/mod_fcgid/sock
644 根 根 /var/run/mod_fcgid/fcgid_shm重新启动服务器,预计现有的 FCGI 进程将被清除,进程数将从 0 开始,因此进程数在几天内不会达到 FcgidMaxProcesses
下面是我的 fcgid.conf 文件。
我知道超时值太高,但我猜这与此错误无关,因为页面加载时间大约为 4-5 秒。
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule !mod_fastcgi.c>
AddHandler fcgid-script fcg fcgi fpl
</IfModule>
FcgidIPCDir /var/run/mod_fcgid/sock
FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm
FcgidProcessLifeTime 120
FcgidIdleTimeout 30
FcgidIdleScanInterval 5
FcgidMaxRequestsPerProcess 300
FcgidMaxProcesses 1200
FcgidIOTimeout 18000
FcgidBusyTimeout 18000
/usr/bin/php-cgi 进程的大小平均为 70MB
我的问题是为什么增加 FcgidMaxProcesses 的值没有任何区别? 还有其他配置文件需要更改吗?
我有并行安装。挖掘 /etc 文件夹时,我遇到了另一个服务,我猜可能会影响 fcgi/FastCGI 操作:
- php-fpm
- sw-引擎-fpm
Fcgid 是否依赖任何此类服务来限制其进程?我该如何检测?
请让我认清现实。
提前致谢。
答案1
问题现已解决。
并且问题与 FCGID 或任何其他 Apache 模块配置无关。
服务器性能突然恶化的原因是攻击 是的,没错!虽然这不是 DDoS,但攻击者使用不同的查询字符串模式(SQL 注入)进行连续请求,并且目标页面的页面加载时间(不包括查询字符串参数)约为 3 秒,导致达到 FCGID 进程的阈值限制。
我在启用mod_status这直接凸显了这种违反规定的企图。
我封锁了该用户的 IP,一分钟之内所有操作都恢复正常。
答案2
关于 FcgidMaxProcesses、Nginx+FPM 和可能的攻击......
但请记住,如果你使用 Fcgid,你还需要检查
FcgidMaxProcessesPerClass xxx
这意味着服务器上的任何用户(即每个用户)都有最大数量的可用进程,并且当达到该限制时,就无法应用新的插槽......