Оптимизация Nginx: параметры sendfile, tcp_nodelay и tcp_nopush

Сие опубликовал в день года

Большинство статей про оптимизацию производительности Nginx рекомендуют использовать параметры sendfile, tcp_nodelay и tcp_nopush в конфигурационном файле nginx.conf. Но, к сожалению, они не говорят ни о том как эти параметры влияют на веб-сервер, ни о том как они работают.

tcp_nodelay

Как мы можем заставить сокет отправлять данные в его буфер? Решение лежит в использовании опции TCP_NODELAY в стеке TCP. Активация TCP_NODELAY заставляет сокет отправлять данные в буфер вне зависимости от размера пакета. Опция tcp_nodelay в настройках Nginx добавляет опцию TCP_NODELAY при открытии нового сокета.

Чтобы избежать перегруженности сети стек TCP реализует механизм который ожидает данные в течение 0,2 секунды вследствие чего слишком маленький пакет не будет отправлен. Этот механизм обеспечивается алгоритмом Нейгла и 200 миллисекунд - это значение в UNIX реализации.

Чтобы понять назначение алгоритма Нейгла вам необходимо помнить что интернет используется не только для отправки... Читать целиком.

Наверх