我们有两台服务器在硬件负载平衡器后面httpd
运行RHEL 6
我们在 httpd 错误日志中收到超时错误。
[Fri Feb 19 15:06:49.823372 2016] [proxy_http:error] [pid 15760] (70007)The timeout specified has expired: [client 172.X.X.187:48453] AH01095: prefetch request body failed to 172.X.X.210:21080 (host-x15) from 172.X.X.187 (), referer: http://www.example.com.au/secure/Book?cb=30938956188 [Fri Feb 19 15:07:37.113599 2016] [proxy_http:error] [pid 16312] (70007)The timeout specified has expired: [client 172.X.X.187:51600] AH01095: prefetch request body failed to 172.X.X.209:21080 (host-x14) from 172.X.X.187 (), referer: http://www.example.com.au/secure/Book?cb=182574845707719466206
在我们的例子中,正在作为usingapache
工作。后面有服务器。load balancer
mod_balancer_mananger
tomcat
apache load balancer
我担心的是timeout
我看到的错误。我的apache
连接一有机会就会断开吗?在上面的场景中,172.X.X.187
是硬件负载均衡器 ip 。172.X.X.210/209
是后面的应用程序服务器IP apache load balancer
。
检查系统,我可以看到来自负载均衡器 IP 的大量 TIME_WAIT 连接。有时会超过 600 个连接。
$ sudo netstat -anp | grep -i time | grep 172.X.X.187 | wc -l
621
$ sudo netstat -anp | grep -i estab | wc -l
681
由于默认的 TCP 内核参数,我们的连接限制是否已耗尽?https://stackoverflow.com/questions/410616/increasing-the-maximum-number-of-tcp-ip-connections-in-linux
$ cat /proc/sys/net/ipv4/tcp_fin_timeout
60
$ cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
$ cat /proc/sys/net/ipv4/tcp_max_syn_backlog
4096
apache load balancer
配置如下
BalancerMember host-x14:21080 min=1 max=1000 loadfactor=1 retry=1 timeout=240 route=host-x4
BalancerMember host-x15:21080 min=1 max=1000 loadfactor=1 retry=1 timeout=240 route=host-x5
请建议。如果您需要更多信息,请告诉我。