我正在使用带有 CentOS 7 的 Apache 2.4.6,我们在此服务器上运行了多个 VirtualHost(大约 500+),包括 SSL/Non-SSL。大多数虚拟主机都有使用 mod_proxy_balancer 的负载平衡节点。
所以现在我在配置新网站/虚拟主机时开始面临这个问题。当我添加新的 VirtualHost 并重新启动 apache 时,我在日志中收到以下错误。
[auth_digest:notice] [pid 64800] AH01757: generating secret for digest authentication ...
[lbmethod_heartbeat:notice] [pid 64800] AH02282: No slotmem from mod_heartmonitor
[core:emerg] [pid 64800] (28)No space left on device: AH00023: Couldn't create the proxy-balancer-shm mutex
[proxy_balancer:emerg] [pid 64800] (28)No space left on device: AH01180: mutex creation of proxy-balancer-shm : pcf1e59f3_x_xxxxxxx failed
[:emerg] [pid 64800] AH00020: Configuration Failed, exiting
在发布到这里之前,我已经在网上搜索过这个问题,我得到的解决方案很少,比如杀死信号量,增加最大打开文件/最大进程限制,但这些都不适用于我的情况。
另外我认为我的服务器配置足够强大,可以处理大量的 VirtualHost,如下所示。Centos 7 64 位专用盒子,配备 512G RAM 和 24 核/48 线程处理器。
如果有人解决了这个问题,请回复我,谢谢
我假设您已经确保运行 Apache 的磁盘上有足够的空间。
除了杀死卡住的信号量之外,您是否尝试过在
kernel.sem
和下增加内核端可用信号量的实际数量kernel.msgmni
?我发现这篇文章对此进行了更深入的介绍。