Software caused connection abort

Igor Sysoev is at rambler-co.ru
Fri Jul 8 15:59:45 MSD 2005


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





More information about the nginx-ru mailing list