我在 CentOS 7 上使用 Apache 2.4.6,我们在这个服务器上运行了多个 VirtualHost(大约 500+ 个),包括 SSL/Non-SSL。大多数虚拟主机都使用 mod_proxy_balancer 进行负载平衡节点。
现在我开始面临配置新网站/VirtualHost 时的问题。当我添加新的 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 线程处理器。
如果有人解决了这个问题,请回复我,谢谢
答案1
我假设您已经确保 Apache 运行的磁盘上有足够的空间。
kernel.sem
除了关闭卡住的信号量之外,您是否尝试过增加内核端可用信号量的实际数量kernel.msgmni
?我发现这对此进行更深入探讨的文章。