
У нас есть два 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
В нашем случае apache
работает как 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
.
Проверяя систему, я вижу множество подключений TIME_WAIT с IP-адреса балансировщика нагрузки. Иногда это более 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/увеличение-максимального-числа-tcp-ip-подключений-в-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
Пожалуйста, предложите. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.