Калькулятор размера пула соединений с базой данных

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

/s
ms
Размер пула, все экземпляры17
Размер пула на экземпляр9
Занято соединений в среднем
6
Загрузка пула
35,3 %

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Введите число ядер CPU сервера базы данных (физических, без гиперпоточности) и число дисков с данными.
  2. Введите, сколько экземпляров приложения (подов, процессов) работает с базой.
  3. Введите общую частоту запросов и среднее время, на которое запрос занимает соединение, включая сетевые задержки и время внутри транзакции.

Формулы

  • Пул всего = ядра × 2 + эффективные диски
  • На экземпляр = ceil(пул всего ÷ экземпляры)
  • Занятые соединения (закон Литтла) = запросов в секунду × время запроса в секундах
  • Загрузка = занятые ÷ пул всего

Пример

База с 8 ядрами и 1 диском, 2 экземпляра приложения, 400 запросов в секунду по 15 мс:

  • пул всего: 8 × 2 + 1 = 17;
  • на экземпляр: ceil(17 ÷ 2) = 9;
  • занято: 400 × 0,015 = 6 соединений; загрузка 6 ÷ 17 = 35,3 %.

Советы

  • При загрузке выше 100 % запросы встают в очередь. Прежде чем добавлять соединения, ускорьте запросы или сократите время, на которое транзакции держат соединение.
  • Учитывайте всех клиентов. Фоновые воркеры, задачи cron и инструменты администратора расходуют тот же лимит базы (max_connections в PostgreSQL).
  • Держите пул постоянным. Если минимальное число простаивающих соединений равно максимуму, не будет всплесков задержки, когда пулу под нагрузкой приходится открывать новые соединения.

Частые вопросы

По какой формуле считать размер пула соединений?

Часто цитируемая отправная точка из вики PostgreSQL и документации HikariCP: соединений = (число ядер × 2) + эффективное число дисков, где ядра — это ядра сервера базы данных. Для 8 ядер и одного диска: 8 × 2 + 1 = 17 соединений.

Формула — на приложение или на всю базу?

На всю базу. Если подключаются несколько экземпляров приложения, они делят это число: 17 соединений на 2 экземпляра — по 9 с округлением вверх. Если дать каждому свои 17, нагрузка на базу удвоится.

Что считать диском (spindle) для SSD?

Spindles — это диски, способные выполнять поиск параллельно. С SSD или данными, которые помещаются в память, ожидание ввода-вывода короткое, и это слагаемое мало что меняет; часто берут 0 или 1. Считайте результат отправной точкой и проверяйте замерами.

Почему маленький пул часто быстрее?

Ядро CPU выполняет один запрос за раз. Когда активных соединений намного больше, чем ядер, база тратит время на переключение между ними и борьбу за блокировки и диск. Небольшой пул с короткой очередью в приложении обычно даёт меньшую задержку, чем сотни соединений.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 7 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.