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

Медленная перезагрузка Haproxy в режиме БД

Недавно я начал использовать отличный инструмент для балансировки нагрузки - Haproxy.

Есть только одна тревожная вещь, и я не могу понять, как с этим бороться. Мы используем haproxy для балансировки нагрузки mysql-трафика. При большом трафике и большом количестве подключений для перезагрузки haproxy требуется время (~ 30 мин), при меньшем трафике перезагрузка выполняется в течение 1 мин.

Я перезагружаю с помощью:

service haproxy reload

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

Похоже, я ошибся в настройках haproxy или в настройках приложения. Если вы знаете, как решить эту проблему, пожалуйста, помогите мне.

Спасибо!

Если вы пройдете -sf в HAProxy (вероятно, то, что делает сценарий инициализации), тогда старый haproxy будет обрабатывать соединения, пока они не перестанут использоваться. Итак, пока соединение открыто, у haproxy будет два экземпляра, пока все они не будут выполнены.

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