我在专用服务器上运行带有 MPM prefork 的 Apache 2.2.21。更多细节:
Server Version: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0-fips DAV/2 SVN/1.7.0 mod_python/3.3.1 Python/2.6.5 mod_bwlimited/1.4 PHP/5.3.6
Run Code Online (Sandbox Code Playgroud)
流量通常在 10-30 个请求/秒之间,有 12GB 的 RAM,我们相当保守地调整了 MaxClients (250)。由于各种原因,我们确实看到了使用高峰(在较旧的服务器上,在这些高峰期间,我们的 MaxClients 数次达到 100)。
无论如何,这是一个新服务器。运行一段时间后,我们的 Apache 状态开始看起来像这样:
GGG_._._RC_.G..C.G_G.C_G..C_.CG_._._G__W____..R.WCR_.W..G_......
Run Code Online (Sandbox Code Playgroud)
G(“优雅地完成”)被卡住了。如果我重新启动 Apache,它们只会消失。这肯定会导致我们在没有定期监控/修复的情况下达到我们的 MaxClients 限制。我在互联网上四处阅读,Apache 中似乎有一个与此类似的错误,但发生在不同的条件下。它显然也在 2.2.14 版中得到了修复。
我包含了一个挂起进程的堆栈跟踪供您检查。
#0 0x000000350c6f119e in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x000000350c67c138 in _L_lock_9164 () from /lib64/libc.so.6
#2 0x000000350c679a32 in malloc () from /lib64/libc.so.6
#3 0x000000350c66fcfb in __libc_message () from /lib64/libc.so.6
#4 0x000000350c675676 in malloc_printerr () from /lib64/libc.so.6
#5 0x000000350c675aa1 in malloc_consolidate …
Run Code Online (Sandbox Code Playgroud)