【发布时间】:2018-08-28 00:00:33
【问题描述】:
我正在从 apache 2.2 升级到 2.4.29,而没有 ssl 和 ssl 一切正常。但是,当我尝试将代理模块与 slotmem_shm 模块一起使用时,根据我的理解,现在在使用负载平衡器模块时这是强制性的,我在 error_log 中收到以下错误:
[Fri Mar 16 17:52:12.073931 2018] [lbmethod_heartbeat:notice] [pid 15571:tid 1] AH02282: No slotmem from mod_heartmonitor
[Fri Mar 16 17:52:12.275257 2018] [slotmem_shm:error] [pid 15571:tid 1] (17)File exists: AH02611: create: apr_shm_create(/usr/local/apache_QA_New/logs/slotmem-shm-p9cbf72c_check.shm) failed
[Fri Mar 16 17:52:12.275543 2018] [proxy_balancer:emerg] [pid 15571:tid 1] (17)File exists: AH01185: worker slotmem_create failed
[Fri Mar 16 17:52:12.275721 2018] [:emerg] [pid 15571:tid 1] AH00020: Configuration Failed, exiting
过去两周我一直在进行头脑风暴。我尝试了不同的解决方案,比如增加内核信号量内存,它们大约是 128K,我已经增加到 16384K,但是这个解决方案似乎仍然不起作用,它似乎也不是正确的解决方案。
我的平衡器文件中有近 30 个平衡器条目,httpd-vhosts.conf 中有超过 50 个虚拟主机条目,每次重新启动时,apache 都会为 shm 创建一些文件,然后关闭,它会一直这样做,直到创建所有文件为此我必须一次又一次地重新启动它。
【问题讨论】:
-
我尝试了不同的解决方案,比如增加内核信号量内存,它们大约是 128K,我已经增加到 16384K 这与创建共享内存文件无关。失败的代码可以在这里找到:github.com/apache/apr/blob/trunk/shmem/unix/shm.c#L144 在不知道您的 Apache 版本是如何编译的情况下,几乎不可能知道我链接到的源代码中采用了哪个代码路径。
-
这是我的配置 enable-mods-shared=all" enable-ssl" enable-modules=all" enable-autoindex" enable-setenvif" enable-alias" enable-so" enable-cache=共享“启用状态”启用重写“启用代理”启用代理连接“启用代理 ftp”启用代理 http“启用代理平衡器”启用内存缓存 =共享“启用文件- cache=shared" enable-headers=shared" enable-usertrack=shared" enable-expires=shared" enable-deflate" enable-proxy-ajp" enable-nonportable-atomics=yes" disable-charset-lite" with-mpm= worker" with-ssl-lib=/usr/sfw/lib" with-ssl=/usr/sfw" with-included-apr"
-
注意:apr和apr-util是放在apache的srclib中
-
您找到解决此问题的方法了吗?我正在处理在 RHEL 8 (httpd-2.4.37) 上安装 apache 的类似操作,其中包含许多平衡器/虚拟主机的配置。
-
是的,我在运行配置时使用“--enable-posix-shm”解决了这个问题。