proxy_upstream_buffer
Устанавливает размер upstream-буфера для TCP и UDP соединений в модуле `stream` NGINX. — NGINX Stream Core
Описание
Директива `proxy_upstream_buffer` используется в контекстах `stream` и `stream server` модуля Stream NGINX для задания размера буфера, в котором хранится данные, отправляемые upstream servers. Этот буфер позволяет накапливать данные перед их пересылкой на upstream, что может оптимизировать производительность за счёт уменьшения числа системных вызовов и повышения пропускной способности. Директива принимает один аргумент, указывающий размер буфера в байтах. На практике установка слишком малого значения `proxy_upstream_buffer` может привести к увеличению количества вызовов записи в upstream сервер, поскольку данные будут пересылаться сразу же после достижения малого предела буфера. И наоборот, чрезмерно большое значение может потреблять слишком много памяти, особенно при высокой нагрузке, когда одновременно активно множество соединений. Поэтому важно подобрать компромисс с учётом требований приложения и доступных системных ресурсов. Синтаксис для задания этой директивы выглядит следующим образом: `proxy_upstream_buffer size;`, где `size` — объём памяти, выделяемый для буферизации. Правильная настройка этой директивы помогает в оптимизации производительности TCP и UDP приложений, обслуживаемых NGINX, особенно в высокопроизводительных условиях или при работе с инкапсулированными протоколами.
Пример конфига
stream {
server {
listen 12345;
proxy_pass backend;
proxy_upstream_buffer 512k;
}
upstream backend {
server backend1.example.com:1234;
server backend2.example.com:1234;
}
}Установка слишком малого размера буфера может вызвать чрезмерное количество системных вызовов и отрицательно повлиять на производительность.
Выделение слишком большого размера буфера может привести к высокому использованию памяти в периоды пикового трафика и потенциально исчерпать системные ресурсы.