Как настроить nginx keepalive_timeout?

12

Я использую nginx вместе с php-fpm для сервера занятого сайта на базе MySQL. В настоящее время я использую keepalive_timeout = 5, однако у меня нет четкого представления о том, как его оптимально настроить. Так что оцените ваши намеки.

alfish
источник

Ответы:

10

Что вам нужно настроить, чтобы сделать, или, скорее: вы видите какие-либо проблемы с настройкой, как вы делаете?

Не существует хорошего универсального ответа; если большинство клиентских браузеров способны загрузить все ресурсы на странице за 5 секунд, то 5 секунд - это нормально, но это полностью зависит от потребностей вашего приложения - например, если ваш сервер nginx служил обратным прокси-сервером для Exchange ActiveSync, Вы хотели бы, чтобы это проворачивалось полностью до получаса.

Шейн Мэдден
источник
Ну, я пытаюсь минимизировать нагрузку на сервер (которая довольно высока во время выбора), и я думаю, что оптимизация keepalive_timeout может частично способствовать достижению этой цели. Кроме того, это просто здоровое любопытство :)
alfish
1
Конечно, так что «как можно меньше, не отталкивая большинство клиентов до того, как они загрузят страницу», - так что, если ваши страницы загружаются менее чем за секунду для большинства ваших клиентов, то время ожидания составляет 1 секунду. Но если ваш тайм-аут не превышает 5 секунд, маловероятно, что это является основной причиной нагрузки на сервер.
Шейн Мэдден
Это сложный вопрос. Как определить время загрузки страницы, учитывая разницу во времени загрузки страниц (некоторые тяжелее других), скорости подключения посетителей и т. Д.
alfish
Просто приблизительный это. Несколько секунд, так или иначе, вряд ли окажут какое-либо существенное влияние на нагрузку, поэтому не стесняйтесь оценивать высокую - но, опять же, новую сборку TCP-соединения (даже с рукопожатием SSL, если применимо) для клиента с медленной загрузкой не будет иметь большого значения в их общей скорости загрузки.
Шейн Мэдден
1
@ShaneMadden, эти 5 секунд - это не срок службы соединения, а только время ожидания, в течение которого сервер ожидает до следующего запроса keepalive_requests. Поэтому не важно, сколько времени требуется для загрузки полной страницы, просто для html, пока браузер не начнет загружать изображения / CSS ... Кстати, макс. время соединения остается открытымkeepalive_timeout*keepalive_requests
Marki555