On Fri, 8 Jul 2005, Konstantin N. Bezruchenko wrote:
On Fri, Jul 08, 2005 at 03:38:03PM +0400, Igor Sysoev wrote:
On Fri, 8 Jul 2005, Konstantin N. Bezruchenko wrote:
On Fri, Jul 08, 2005 at 02:41:45PM +0400, Igor Sysoev wrote:
On Fri, 8 Jul 2005, Konstantin N. Bezruchenko wrote:
Сейчас поставил свежую версию nginx.
Увидел в error_log вот что:
2005/07/08 10:23:06 [crit] 154#0: accept() on 192.168.1.1:80 failed (53:
Software caused connection abort)
Раньше такого не было.
Правда раньше я и worker-ов ставил 10-20, а сейчас 1 стоит.
Может быть в этом причина?
Эта ошибка появляется, когда клиент закрывает соединение до того,
как nginx вызвал accept(). Можно попробавать увеличить число worker'ов.
Если она пропадёт или станет значительно реже, то у меня есть идея,
почему это может быть. OS, насколько я понимаю, FreeBSD ?
Сначала поднял кол-во worker до 2 - не помогло.
Затем до 10 - результат тот-же.
Ну в целом насколько я понимаю ситуация обычная? Клиент действительно может
закрыть соединение.
Да, это обычная ситуация.
А что за идея была? :-)
kevent() возвращает число сокетов, доступных для accept().
nginx в этом случае делает именно такое количество вызовов accept(),
экономя один системный вызов. Если nginx получает ошибку ECONNABORTED,
то он включает её в число сокетов, возвращённых в kevent().
Возможно, нужно не включать. Но в любом случае, если соединения
приходят хотя бы раз в пару секунд, это никак не влияет на ECONNABORTED.
Ведь ошибок таки стало меньше :-
Скорее всего, попался такой вот клиент.
Игорь Сысоев
http://sysoev.ru