Рубрики
Без рубрики

Профессиональный размер пула соединений с помощью пула Flexi

Автор оригинала: Vlad Mihalcea.

Я ранее писал о преимуществах объединения соединений в пул и почему мониторинг имеет решающее значение . Этот пост продемонстрирует, как Flexipool может помочь вам найти подходящий размер для ваших пулов соединений.

Первый шаг – узнать настройки вашего пула подключений. Мое текущее приложение использует транзакции XA, поэтому мы используем Менеджер транзакций Bitronix , который поставляется с собственным решением для объединения соединений.

В соответствии с Документация пула подключений Bitrix нам нужно использовать следующие настройки:

  • минимальный размер пула: начальный размер пула подключений
  • maxPoolSize: максимальный размер, до которого может вырасти пул соединений.
  • maxIdleTime: максимальное время, в течение которого соединение может оставаться в режиме ожидания до его уничтожения.
  • время ожидания приема: максимальное время, в течение которого запрос на подключение может подождать, прежде чем выдавать тайм-аут. Значение по умолчанию 30s-это слишком много для нашего QoS

Пул Flexi поставляется с реализацией показателей по умолчанию, построенной поверх Показателей Dropwizard и предлагающей два механизма отчетности:

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

Начальные настройки

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

Минимальный размер пула 0 Пул начинается с начального размера 0
Максимальный размер пула 1 Бассейн начинается с максимального размера 1
время ожидания получения 1 Запрос на подключение будет ждать 1 с, прежде чем отказаться от выполнения с исключением времени ожидания
максимальное переполнение 9 Пул может увеличиться до 10 подключений (начальный максимальный размер пула + максимальное переполнение).
повторите Попытку 30 Если достигнут окончательный максимальный размер пула, равный 10, и соединение недоступно, запрос повторится 30 раз, прежде чем отказаться.

Метрики времени

Наше приложение представляет собой пакетный процессор, и мы собираемся позволить ему обрабатывать большой объем данных, чтобы мы могли собирать следующие показатели:

  1. гистограмма параллельных подключений
  2. гистограмма одновременных Запросов на подключение
  3. Гистограмма максимального размера
  4. подключение Получить Миллис
  5. гистограмма повторных попыток
  6. общее Количество Подключений В Миллисекундах
  7. Подключение-миллис

Проанализировав показатели, мы можем сделать следующие выводы:

  • Максимальный размер пула должен быть 8
  • Для этого максимального размера пула повторных попыток не предпринимается.
  • Время получения соединения стабилизировалось после того, как пул вырос до максимального размера.
  • Пиковое время аренды подключения составляет 50 секунд, в результате чего размер пула увеличивается с 7 до 8. Сокращение времени удержания соединений позволяет нам также уменьшить размер пула.

Если максимальное количество подключений к базе данных равно 100 мы можем иметь самое большее 12 запущенные параллельные приложения.

Выход из зоны комфорта

Давайте предположим, что вместо 12 нам нужно было бы бежать 19 такие услуги. Это означает, что размер пула должен быть не более 5 . Уменьшение размера пула увеличит конфликт запросов на подключение и вероятность повторных попыток получения соединения.

Мы изменим максимальное переполнение на 4 на этот раз при сохранении других настроек без изменений:

максимальное переполнение 4 Пул может увеличиться до 10 подключений (начальный максимальный размер пула + максимальное переполнение).

Показатели перезагружены

Это новые показатели:

  1. гистограмма параллельных подключений
  2. гистограмма количества одновременных подключений
  3. Гистограмма максимального размера
  4. подключение Получить Миллис
  5. гистограмма повторных попыток
  6. общее Количество Подключений В Миллисекундах
  7. Подключение-миллис

Анализируя показатели, мы можем сделать вывод, что:

  • Для максимального размера пула 5 есть не более 3 повторите попытку.
  • Общее время получения соединения подтверждает повторные попытки.
  • Время аренды пикового соединения было воспроизведено, даже если на этот раз оно составляет около 35 секунд.

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

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