output_buffers
Директива output_buffers настраивает количество и размер буферов, используемых для чтения тела ответа от upstream-сервера. — NGINX HTTP Core
Описание
Директива `output_buffers` задаёт количество и размер буферов, которые NGINX использует для хранения ответа, отправляемого клиенту. Когда формируется ответ, NGINX должен эффективно управлять выводом, особенно для больших ответов. Эта директива помогает оптимизировать такое управление, позволяя администратору указать, сколько буферов и какого размера должен быть каждый буфер в зависимости от ожидаемого размера ответов. Она особенно полезна для настройки производительности: меньшее число больших буферов может снизить накладные расходы, но при этом привести к большему потреблению памяти. Синтаксис директивы требует двух параметров: первый — количество буферов, второй — размер каждого буфера. Например, `output_buffers 2 16k;` настраивает NGINX на использование 2 буферов по 16 килобайт каждый. Такое выделение означает, что до 32 килобайт могут быть буферизированы одновременно до начала отправки данных клиенту. Директиву можно объявлять в контекстах `http`, `server` или `location`, что обеспечивает гибкость для разных частей конфигурации сервера. Необходимо внимательно выбирать подходящие размеры и количество буферов, исходя из шаблонов трафика и размеров ответов. Слишком маленький буфер может привести к частым записям NGINX клиенту, что снижает производительность, тогда как чрезмерно большие буферы могут привести к расточительному использованию памяти. Рекомендуется постоянно мониторить размеры ответов и производительность при тонкой настройке этих значений.
Пример конфига
http {
output_buffers 4 32k;
}Использование неподходящих размеров может привести к неэффективному использованию памяти и снижению производительности.
Хотя увеличение размера буфера может повысить производительность при обработке больших ответов, это может привести к расточительному использованию памяти для меньших ответов.