У нас есть haproxy 1.3.26, размещенный на процессоре CentOS 5.9 с процессором Intel Xeon с тактовой частотой 2,13 ГГц, который действует как балансировщик нагрузки tcp http 10 для множества сервисов, обеспечивая максимальную пропускную способность ~ 2000 запросов/секунду , Он работает отлично в течение 2 лет, но постепенно увеличивается количество трафика и количество услуг.Большое количество TIME_WAIT в Haproxy
В конце мы заметили, что даже после перезагрузки старый процесс гапрокси остается. В ходе дальнейшего исследования мы обнаружили, что старый процесс имеет многочисленные связи в состоянии TIME_WAIT. Мы также видели, что netstat
и lsof
занимали много времени. При обращении http://agiletesting.blogspot.in/2013/07/the-mystery-of-stale-haproxy-processes.html мы представили option forceclose
, но он испортил различные службы мониторинга и, следовательно, вернул его. При дальнейшем копания мы поняли, что в /proc/net/sockstat
близко к 200K сокеты в tw
(TIME_WAIT
) состояние, которое вызывает удивление, как в /etc/haproxy/haproxy.cfg
maxconn
был определен как 31000 и ulimit-n
, как 64000. Мы были timeout server
и timeout client
, как 300s
, который мы изменили на 30s
, но не много использование.
Теперь сомнения: -
- ли такое большое количество TIME_WAITs является приемлемым. Если да, то какой номер, после которого мы должны волноваться. Глядя на What is the cost of many TIME_WAIT on the server side? и Setting TIME_WAIT TCP, похоже, не должно быть никаких проблем.
- Как уменьшить этот TIME_WAITs
- Существует ли какая-либо альтернатива NetStat и LSOF, которые будет выполнять хорошо, даже если Есть очень большого количество TIME_WAITs
Если вы поставили '-n' на' netstat' и 'lsof', они оперативно реагируют? –
no 'netstat -n' не помогает, infact Я всегда использовал с опцией' -n' – pseudonym