out of tcptw
Maxim Dounin
mdounin на mdounin.ru
Ср Дек 7 15:52:57 UTC 2011
Hello!
On Wed, Dec 07, 2011 at 11:44:35AM +0400, Evgenii Davidov wrote:
>
> товарищи ученые
>
> вчера я на 5 минут выбежал из tcptw:
>
> ITEM SIZE LIMIT USED FREE REQUESTS FAILURES
> tcptw: 52, 40968, 11922, 22638, 47803752, 0
> tcptw: 52, 40968, 31451, 3109, 47835019, 0
> tcptw: 52, 40968, 39130, 686, 47873887, 0
> tcptw: 52, 40968, 40335, 633, 47889337, 26837
> tcptw: 52, 40968, 40397, 571, 47889399, 69815
> tcptw: 52, 40968, 40465, 503, 47889471, 112430
> tcptw: 52, 40968, 40522, 446, 47889530, 153805
> tcptw: 52, 40968, 35654, 5314, 47904332, 173111
> tcptw: 52, 40968, 27982, 12986, 47932049, 173111
>
> stub status при этом показывал:
>
> Reading: 351 Writing: 50 Waiting: 6801
> Reading: 649 Writing: 78 Waiting: 6502
> Reading: 880 Writing: 152 Waiting: 6457
> Reading: 856 Writing: 209 Waiting: 6238
> Reading: 854 Writing: 167 Waiting: 6120
> Reading: 579 Writing: 43 Waiting: 6421
> Reading: 443 Writing: 41 Waiting: 6368
>
> как вы думаете, правильно ли я понимаю что это произошло потому что было настроено:
>
> worker_processes 4;
> worker_connections 2000;
>
> и при приближении к 8000 nginx стал в срочном порядке закрывать
> соединения и этих закрытых соединений в состоянии протухания
> стало слишком много?
Это произошло потому, что количество открываемых соединений было
большое.
Вообще, вылезать за tcptw - это не страшно. Ну не будет TIME_WAIT
сокета, самое плохое что может случиться - это RST там, где его
быть не должно.
> (по моим прикидкам клиентов было тыщ 11)
>
> также было настроено
>
> sysctl net.inet.tcp.fast_finwait2_recycle=1
> sysctl net.inet.tcp.finwait2_timeout=5000
>
> за эти 5 минут успел 500 раз ругнуться named типа: client 84.53.200.24#1202: error sending response: not enough free resources
Это - отдельная и малосвязанная проблема (т.е. причина может быть
та же самая, e.g. DoS, но никакого отношения к time_wait оно не
имеет). Скорее всего - переполнялась очередь на интерфейсе, и от
этого происходил ENOBUFS, смотрите netstat -nid.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru