Почему Nginx не может повторно использовать соединение с восходящим потоком при обслуживании последовательных запросов от клиентов?

Как упоминалось в http: // nginx. org / en / docs / http / ngx_http_upstream_module.html # keepalive

Следует особо отметить, что директива keepalive не ограничивает общее количество подключений к вышестоящим серверам, которые может открыть рабочий процесс Nginx. Параметр соединений должен быть установлен на достаточно маленькое число, чтобы серверы вышестоящего потока также могли обрабатывать новые входящие соединения.

Я хочу понять, если приходит новый клиент, почему они не могут использовать существующие соединения keep-alive?

Нужно ли Nginx создавать новое соединение с восходящим потоком каждый раз, когда приходит новый клиент?

2
задан 23 August 2017 в 13:21
1 ответ

Я думаю, что это означает , что если поступит больше запросов, чем количество доступных поддерживающих соединений, то все равно будет открыто новое.

Кроме того, ,обратите внимание на предложение, предшествующее тому, которое вы цитируете из http://nginx.org/r/keepalive :

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

Обратите внимание на часть «каждый рабочий процесс». Я бы предположил, что если соединение (с новым клиентским запросом) входит в рабочий процесс, который уже прошел свое количество поддерживающих соединений с данным сервером, то новый все равно будет открыт, даже если какой-то другой рабочий у процессов все еще есть некоторые из своих соединений keepalive с тем же сервером восходящего потока, который все еще бездействует.

Если вам нужна дополнительная информация, вероятно, стоит покопаться в ngx_http_upstream_keepalive_module.c .

2
ответ дан 3 December 2019 в 11:32

Теги

Похожие вопросы