tcp_nodelay on;

Михаил Монашёв postmaster at softsearch.ru
Fri Apr 24 20:43:51 MSD 2009


Здравствуйте, Максим.

>> >> >> MD> Да.  Но поскольку nginx использует внутреннюю буферезацию и не
>> >> >> MD> отправляет в сеть пакеты меньше postpone_output (1460 байт по
>> >> >> MD> умолчанию), то особого смысла отключать tcp_nodelay не имеет.
>> >> >> 
>> >> >> А если у меня mtu 9000, а не 1500 ?
>> >> 
>> >> MD> Увеличить postpone_output при увеличении mtu должно быть полезно,
>> >> MD> по крайней мере для внутренних соединений.
>> >> 
>> >> А сколько ставить? 9000 минус 40, т.е. 8960? Или 9000?
>> 
>> MD> 8960
>> 
>> >> Просто я не совсем понимаю, почему postpone_output 1460, а не 1500. На
>> >> что отводятся эти 40 байт?
>> 
>> MD> MTU - это сколько пролезет в ethernet.  А пролезть должны данные и
>> MD> заголовки протоколов по дороге (ip, tcp).  Для заголовков 40 байт
>> MD> и отводятся.  Если протоколов больше или они другие (e.g. тунели
>> MD> или ipv6) - то отводить надо больше.
>> 
>> MD> http://en.wikipedia.org/wiki/Maximum_segment_size
>> 
>> До меня дошло. Размер postpone_output можно подобрать через ping:
>> 
>> sudo ping -D -s <packet-size> <ip>
>> 
>> Просто нужно подставлять <packet-size> всё больше и больше, пока пинги
>> не пропадут.

MD> Нет, до тебя неправильно дошло.  Ибо ping использует ICMP 
MD> echo-request, а тебе нужен TCP.  У ICMP заголовок всего 8 байт, 
MD> т.е. в стандартное MTU 1500 влезет ping -s 1472, а в TCP пакет 
MD> столько данных уже не влезет.

Интересно, а есть какая-нить тулза для определения этого размера? А то
очень  много  параметров  на  него  влияют. Появится во фре какое-нить
новое расширение tcp или свич поменяется или ещё что-то ...

--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.






More information about the nginx-ru mailing list