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

Что такое параметр .max_connections в varnish vcl и как рассчитать это значение для внутреннего сервера nginx

Я видел параметр .max_connections в varnish default.vcl и, поискав в Интернете, нашел артиль ниже .max_connections: сколько соединений вы разрешаете Varnish открывать с этим сервером. Помните, что соединения объединяются в пулы и используются повторно, так что вашему бэкэнду в любом случае должно быть легче, но иногда вам нужно защитить его еще больше. Однако будьте осторожны, потому что это жесткий предел, и если он будет достигнут, Varnish не будет использовать этот бэкэнд, даже если это означает возврат пользователю ошибки.

Теперь я хочу знать, означает ли максимальное соединение запрос / сек или одновременного пользователя или что-то еще. Как я могу рассчитать это для внутреннего сервера nginx?

Необходимость нескольких внутренних подключений

В HTTP/1.1 отсутствует мультиплексирование запросов в одном соединении. Если есть несколько запросов к Varnish одновременно, для ресурсов, которые не хранятся в кеше, может быть открыто несколько внутренних соединений.

Varnish будет поддерживать соединения с серверной частью открытыми и повторно использовать их для других запросов. Лак тоже выполнит запрос объединения и свернуть серверные запросы для того же ресурса.

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

Ограничение внутренних подключений

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

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

Если ваш процент попаданий приличный, вы никогда не достигнете этого предела, но если вы это сделаете max_connections обеспечит постановку выборки в очередь до тех пор, пока соединение не освободится.

Расчет max_connections

max_connections есть ли, чтобы помешать вашему серверу работать недостаточно памяти.

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

Вы можете выполнить нагрузочный тест, используя ab или siege и выясните, сколько одновременных подключений может обработать ваш источник, прежде чем перейти к высокой нагрузке.

Пожалуйста, убедитесь keepalive выключен во время этих тестов

Это очень много проб и ошибок. Убедитесь, что ваш начальный max_connections значение слишком велико, отправьте достаточно трафика и ищите переломный момент.

Понизьте значение max_connections, промыть, повторить.

Как только вы выяснили max_connections настройки для вашего происхождения, сохраните его в конфигурации веб-сервера вашего происхождения (Apache или Nginx).

В конце концов, вы также установите это значение в своем определении бэкэнда Varnish.

Идея состоит в том, что Varnish не должен допускать большего количества одновременных подключений к вашим внутренним серверам, чем то, что они настроены для обработки.