sendfile_max_chunk

Директива sendfile_max_chunk задаёт максимальный объём данных, отправляемых с помощью системного вызова sendfile в NGINX. — NGINX HTTP Core

sendfile_max_chunk
httpserverlocation
Синтаксисsendfile_max_chunk size;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `sendfile_max_chunk` определяет максимальное количество данных в байтах, которое может быть передано с помощью системного вызова `sendfile` за одну операцию. Это особенно полезно для оптимизации отправки файлов на серверах с высокой нагрузкой, когда может потребоваться учесть ограничения базовой операционной системы для оптимизации пропускной способности. При заданном значении директива ограничивает объём данных, который может быть передан в одном вызове `sendfile`, что может помочь контролировать использование памяти и избегать блокировок при передаче больших файлов. Если размер отправляемого файла превышает указанный размер чанка, NGINX разобьёт передачу на несколько вызовов `sendfile`, каждый из которых будет ограничен заданным максимальным размером чанка. Такое поведение обеспечивает эффективное использование ресурсов и может улучшить общую отзывчивость сервера при высокой нагрузке. Директива особенно актуальна при обслуживании статических файлов, таких как изображения или видео, где производительность может ухудшаться при масштабировании без этого ограничения. Настройка этого параметра позволяет администраторам найти баланс между потреблением ресурсов и производительностью приложения, что делает его важным аспектом оптимизации производительности NGINX.

Пример конфига

http {
    sendfile on;
    sendfile_max_chunk 1m;
}

Установка слишком низкого значения может привести к неэффективной передаче данных и к повышенному использованию CPU из-за частых переключений контекста.

В средах с небольшими размерами файлов высокое значение может дать мало преимуществ и необоснованно усложнить управление ресурсами.