我的 apache 以 0.05 的服务器负载持续提供大约 300 个请求/秒(2 兆字节/秒)的服务。
问题是,我的服务架构导致在特定时刻获得巨大流量(例如 300-500 人在几秒钟内被重定向到某个使用 JavaScript 的页面)。
在如此短的流量跳跃之后,apache 变得无响应(在 firefox 中大约 30 秒后连接重置)而没有记录任何内容。Apache 被冻结,直到 apache2 重新启动程序。
冻结时,它甚至无法在没有 PHP 或 SQL 连接的情况下提供简单的 HTML 文件(但存在 apache2 进程)
我尝试了不同的 prefork 设置,从 50 到近 1000 个空闲工人,最大客户端限制为 10000,但没有任何帮助。
除了不记录任何内容之外的另一个症状是,在冻结前的那一刻,apache 状态模块显示(在它变得无响应之前的最后一次)几乎每个进程都在等待连接:
__R_R_______R__RR______R___R________________RR_______R______R___
_________R__________R_________________________R________CR___R___
___________R__________________________C__WR__R________________R_
Run Code Online (Sandbox Code Playgroud)
但在正常的、不那么繁重的工作中,它显示:
C___R___K_C___C___C_____KK______R___C_C_R______C__K___C________K
____C__KR_RR__C___K___KK_C__R__K__C_CK__RC___CR___R__K__C__R____
___KR____C_____R______R______K__R_______KC__C_K__R____C_______R_
Run Code Online (Sandbox Code Playgroud)
syslog 也没有给出任何内容。我的机器有 64GB 内存,从不超过 0.1 的负载
我尝试安装 xfvb 进行无头 firefox 和 selenium 测试,但安装后:
apt-get install xvfb
我在服务器上只有这些文件(通过xvfb搜索):
/usr/bin/xvfb-run
/usr/share/doc/xvfb
/usr/share/man/man1/xvfb-run.1.gz
/var/lib/dpkg/info/xvfb.list
/var/lib/dpkg/info/xvfb.md5sums
/var/cache/apt/archives/xvfb_2%3a1.7.7-14_i386.deb
Run Code Online (Sandbox Code Playgroud)
如您所见,没有xvfb
可执行文件/usr/bin/
使用 Debian 2.6.32-042stab055.12