Я видел параметр .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 не должен допускать большего количества одновременных подключений к вашим внутренним серверам, чем то, что они настроены для обработки.