Это моя текущая конфигурация ...
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. Может, больше клиентов отключатся, если им придется подождать?