AIX 6.1上的Apache 2.4,多个具有Proxy / BalancerMember的虚拟主机 – >共享内存(shm)slotmem文件

我有一个Apache 2.4.23configuration,启用了mod_proxy / mod_proxy_balancer / mod_slotmem_shm / mod_lbmethod_byrequests。

此外,我有多个VirtualHost监听不同的端口,像这样的设置(PORT和COMPONENT是唯一的):

Listen PORT <VirtualHost *:PORT> Include "eib/conf/default-proxy-params" ErrorLog "logs/PORT-COMPONENT-error.log" CustomLog "logs/PORT-COMPONENT-access.log" common <Proxy balancer://COMPONENT/> BalancerMember https://HOST1:PORT BalancerMember https://HOST2:PORT ProxySet lbmethod=byrequests </Proxy> ProxyPass / balancer://COMPONENT/ lbmethod=byrequests nofailover=Off maxattempts=3 ProxyPassReverse / balancer://COMPONENT/ </VirtualHost> 

当我在我的configuration只有一个VirtualHost条目,一切工作正常。 只要我添加另一个VirtualHost,Apache崩溃configuration失败的错误:

 [Wed Oct 12 21:59:38.211829 2016] [slotmem_shm:error] [pid 4129010:tid 1] (24)Too many open files: AH02611: create: apr_shm_create(/apache/logs/slotmem-shm-pf3f0916c.shm) failed [Wed Oct 12 21:59:38.211927 2016] [:emerg] [pid 4129010:tid 1] AH00020: Configuration Failed, exiting 

我已经检查ulimit设置为无限的文件数量,所以这不可能是问题。 似乎为BalancerMemebers创build的slotmem文件之间存在冲突。

当我从一个单一的虚拟主机开始,一切都会按预期工作,我得到以下slotmem文件创build:

 slotmem-shm-p99964586.shm slotmem-shm-p99964586_COMPONENT.shm 

一个似乎是唯一的(_COMPONENT)的虚拟主机,但第二个看起来像它可能会导致名称冲突。

有人有一个想法如何解决这个问题?

赞美和荣誉包容! 运用

 truss -f apachectl -X 

我能够跟踪到错误的呼叫

 6226262: 45089225: shmat(39845990, 0x00000000, 0) Err#24 EMFILE 

AIX上的man shmat揭示了这个秘密:

扩展shmatfunction可用。 如果定义了一个环境variablesEXTSHM = ON,那么在该环境中执行的进程将能够创build并附加多于十一个共享内存段。