Когда использовать httpclose или http-server-close в haproxy

Я унаследовал систему, в которой у нее есть некоторые проблемы с производительностью из-за латентности сети. Мы используем CentOS 5.x и haproxy 1.5x

Причина в том, что на каждый запрос API приходится много времени из-за времени, затраченного на "начальное соединение"

Пример

Игнорируйте оставшуюся часть времени, поскольку это всего лишь пример, взятый из Интернета, остальная часть времени прекрасна с моего конца, за исключением "начального соединения" , где все вызовы API рассчитаны на 150 - 250 мс для "начального соединения" ,.

После удаления параметров настройки "httpclose" из haproxy производительность значительно улучшилась, поскольку все время ожидания от "начального соединения" исчезло.

Пройдя несколько статей, я нашел этот http://killtheradio.net/technology/haproxys-keep-alive-functionality-and-how-it-can-speed-up-your-site/

Где он предлагает удалить:

option httpclose 

и замените на

timeout client  5000
option http-server-close

Итак, мои вопросы:

  • Когда использовать параметр httpclose?
  • Сервер, использующий haproxy, отвечает за все наши вызовы Restful API, есть ли какие-либо другие соображения, о которых мне нужно знать после удаления конфигурации "option httpclose"?
  • Должен ли я использовать параметр http-server-close и какие последствия?

Ответ 1

Фактически вы должны использовать

option http-keep-alive

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

Следующее, что нужно сделать, чтобы поддержка вашего бэкэнд поддерживала поддержку HAproxy, в противном случае это бесполезно, и вы можете вернуться в режим закрытия http-сервера.

В зависимости от скорости ваших запросов и количества параллельных клиентов вам необходимо настроить timeout http-keep-alive, чтобы убедиться, что у вас достаточно слотов для подключения к интерфейсу, сохраняя при этом хорошее процентное соотношение повторного использования. Хорошее значение для начала - несколько секунд.

Опция httpclose должна использоваться только в том случае, если вы хотите закрыть соединение как с сервером, так и с клиентом, что почти никогда не происходит, если клиенты не сломаны. Если у вас есть сервер, который не может справиться с большим количеством запросов на простаивание, вы можете использовать опцию http-server-close, но все современные веб-серверы к ней хорошо.

Это также поможет с помощью части SSL, поскольку она представляет собой значительный фрагмент фазы подключения (при условии, что для каждого запроса не потребуется SSL-квитирование), но вы можете посмотреть на производительность кеша сеанса SSL и если у вас более одного активного сервера HAproxy, поддержка RFC5077 (требуется v1.6 +).

https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#tune.ssl.cachesize https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#3.2-tune.ssl.lifetime