Размер пула соединений
Вопрос
Сервис на 8 ядрах, база PostgreSQL на 8 ядрах с SSD. Под нагрузкой не хватает соединений, и разработчик предлагает поднять maximumPoolSize с 10 до 200. Что ответите?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Скорее станет хуже: база не потянет 200 запросов разом, ищите, кто держитправильный ответ
- Правильно: чем больше соединений в пуле, тем выше пропускная способность сервиса
- Нужно ещё больше, по соединению на каждый поток веб-сервера, иначе будут очереди
- Размер пула на производительность не влияет, только на память JVM и базы
Разбор
Активно выполнять запросы база может примерно по числу ядер плюс ожидание диска. Сотни одновременных запросов увеличат конкуренцию за CPU, блокировки и память на соединение (в PostgreSQL каждое соединение это процесс). Рекомендации HikariCP говорят о небольших пулах. Нехватка соединений обычно означает, что они долго удерживаются: длинные транзакции, внешние вызовы внутри, медленные запросы, N+1. Это и надо искать.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.