proxy_upstream_buffer
Устанавливает размер upstream-буфера для TCP и UDP соединений в модуле `stream` NGINX.
Описание
Директива 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;
}
}Установка слишком малого размера буфера может вызвать чрезмерное количество системных вызовов и отрицательно повлиять на производительность.
Выделение слишком большого размера буфера может привести к высокому использованию памяти в периоды пикового трафика и потенциально исчерпать системные ресурсы.