Назад | Перейти на главную страницу

Почему входящая пропускная способность обратного прокси-сервера nginx увеличивается и намного превосходит исходящую, когда включен proxy_buffering?

Это моя текущая конфигурация ...

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 128 32k;
proxy_send_timeout 20;
proxy_read_timeout 20;
#proxy_max_temp_file_size 1m;
proxy_temp_path /dev/shm/nginx_proxy_buffer;
proxy_pass $url;

Раньше у меня не было включено proxy_buffering, однако на моих новых серверах очень высокий% возраст программных прерываний (% si), поэтому ЦП становится узким местом, когда мой обратный прокси обрабатывает около 300 Мбит.

При буферизации прокси прерывание программного обеспечения падает, и я получаю скорость передачи почти полного гигабита, к которой подключены серверы.

Однако входящая пропускная способность почти вдвое превышает исходящую! Ставки, конечно, колеблются, но в среднем у меня почти вдвое больше входящих, чего я не понимаю. Это очень плохо, потому что мой 95% биллинг берет на себя максимум входа / выхода ...

Насколько я понимаю, если пользователь отменяет загрузку, данные, которые уже были переданы с исходного сервера в буфер, будут потеряны, что приведет к такому поведению. Однако абсурдно, что это происходит и вызывает 100% завышение ...

Любой ввод приветствуется!

У вас включен gzip для клиентов? Это может объяснить разницу, поскольку бэкэнд-соединения nginx <-> не сжимаются по умолчанию (я не могу вспомнить, позволяют ли недавняя поддержка бэкэнда http / 1.1 и модуль фильтра gunzip безопасно включать gzip между nginx и бэкэнд-сервером или не).

EDIT: это не объясняет, почему вы не видите этого поведения с отключенным proxy_buffering. Может, больше клиентов отключатся, если им придется подождать?