Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
"UNIX domain sockets" vs "IP sockets over localhost"
On Wednesday, July 9, 2008 at 12:03:24, Andrei Nigmatulin wrote:
>> AN> Тут в общем-то самое полезное, что может сделать nginx -
>> AN> сообщить о том, что ошибка произошла в момент подключения.
>> AN> Так как из "(134: Transport endpoint is not connected)
>> AN> while sending request to upstream" сложно понять,
>> AN> что на самом деле произошло.
>> возможно это такой подход - не заниматься интерпретацией сообщений
>> об ошибках, а только буквально сообщать в лог о том, что произошло.
>> аналогичный случай с другой ошибкой - http://sysoev.ru/nginx/docs/faq.html
AN> Нет, это не аналогичный случай.
AN> Тут ошибка ясна уже сразу после connect(),
AN> но попадает в лог не она, а другая, наведенная.
да. но о том, что "Transport endpoint is not connected" говорится явно.
причина этой другой ошибки скорее всего в том, что не удалось подключиться.
>> AN> Или перейти на tcp.
>>
>> а чем в такой ситуации может помочь переход на tcp?
>> в пределах localhost`а tcp ведь работает медленнее,
>> чем unix sockets - будет только больше 502 ошибок?
AN> tcp сокет вернет EINPROGRESS в этом месте,
AN> а значит соединение все-таки случится, но позже.
тогда - согласно POSIX стандарту система обязана установить соединение.
что в случае переполнения backlog`а уже невозможно, насколько я понимаю.
если рассматривать вариант
=======================
AN> В linux точно не возвращает ECONNREFUSED - сервер просто не отвечает на SYN,
AN> что дает соединению шансы установиться при очередном retransmittion.
=======================
это ничем не лучше увеличения размеров backlog`а.
тут только добавляется лишний overhead и timeouts
AN> А то, что tcp медленнее локальных сокетов вы сможете
AN> заметить только на тысячах или десятках тысяч rps.
AN> Зачем вам об этом вообще беспокоиться
AN> если php все равно съест 99.9% cpu ?
все-таки, лучше будет увеличить somaxconn до 1024,
эта рекомендация даже в FreeBSD handbook записана.
P.S. вот небольшое сравнение "UNIX domain sockets" и "IP sockets over localhost"
http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html
насколько я понимаю, при достаточно большом значении somaxconn (1024 и больше)
"UNIX domain sockets" по всем параметрам будут лучше "IP sockets over localhost"
для выполнения задачи взаимодействия nginx frontend и anything localhost backend
--
Best regards,
Gena
|