Apache重置LDAP请求并挂起

我在CentOS 6.5下运行Apache 2.2.15。 正在使用mod_authnz_ldap模块对Microsoft AD服务器进行身份validation。 这里是Apache中的LDAPconfiguration:

 AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPURL ldap://[ad server ip address]/[basedn]?mail AuthLDAPBindDN [binddn] AuthLDAPBindPassword [bindpass] AuthName "LDAP: myhost.example.com" Require ldap-group cn=[foo],ou=Permissions,ou=Groups,ou=[bar],dc=[baz],dc=com 

大多数情况下,浏览器对这个Apache主机的请求工作正常。 它对AD服务器进行正确的身份validation,页面正常加载。

然而,平均每隔几分钟,请求就会从浏览器端挂起。 tcpdump显示Apache正在发送一个TCP RST数据包,显然是响应来自AD主机的PSH ACK数据包。 交换看起来像这样:

 53 600.408744 Apache AD TCP 74 42804 > ldap [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=2665219285 TSecr=0 WS=128 55 600.469478 AD Apache TCP 66 ldap > 42804 [PSH, ACK] Seq=1 Ack=3457841362 Win=65093 Len=0 TSval=4832637 TSecr=2664621718 56 600.469524 Apache AD TCP 54 42804 > ldap [RST] Seq=3457841362 Win=0 Len=0 65 601.409434 Apache AD TCP 74 [TCP Retransmission] 42804 > ldap [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=2665220285 TSecr=0 WS=128 67 601.470951 AD Apache TCP 78 [TCP Previous segment not captured] ldap > 42804 [SYN, ACK] Seq=252322338 Ack=1 Win=16384 Len=0 MSS=1380 WS=1 TSval=0 TSecr=0 SACK_PERM=1 

在这一点之后,在这个连接上没有其他数据包被发送,所以线程似乎挂起。 strace没有提供任何照明,它只是显示一个正在使用LDAP绑定请求进行的write()调用。

我还有一个运行时间较长的tcpdump会话,可以捕获其中一个Apache进程尝试从TCP端口发送LDAP请求,该端口不是任何打开的连接的一部分。 它看起来像是从早期的连接(类似于上面的转储中显示的types),不知何故Apache进程认为该连接仍然是开放的。

我想也许有一个LDAPcaching是有问题的,所以我禁用它们如下:

 LDAPSharedCacheSize 0 LDAPCacheEntries 0 LDAPOpCacheEntries 0 

但这没有什么区别。 问题仍然存在。

目前修复的唯一方法是每隔几分钟重新启动Apache。 随着服务器收到的负载,问题在几分钟内重新启动发生。