Исчерпание пула соединений называют «тихим убийцей», потому что оно не объявляет о себе — ваше приложение ColdFusion прекрасно работает для 10 пользователей, время от времени выдает таймауты базы данных на 20 и становится непригодным для использования из-за «соединения недоступно», э-э...
Исчерпание пула соединений называется «тихим убийцей», потому что оно не объявляет о себе — ваше приложение ColdFusion отлично работает для 10 пользователей, время от времени выдает тайм-ауты базы данных на 20 и становится непригодным для использования с ошибками «соединение недоступно» на 50, и все это при том, что процессор и память вашего сервера выглядят нормально. Причина в том, что ColdFusion взаимодействует с вашей базой данных через пул повторно используемых соединений JDBC (именованный источник данных), и этот пул имеет жесткий потолок — настройку «Ограничить количество подключений» / «Максимальное количество подключений». Когда каждое соединение в пуле проверено и ни одно не возвращается, новые запросы ставятся в очередь и ждут, а затем истекает время ожидания; запросы накапливаются в потоках запросов ColdFusion, и все приложение останавливается. Обычно это вызвано одной из трех причин: утечкой соединения (запросы или транзакции, которые никогда не освобождают свое соединение), медленным нисходящим потоком (запросы, которые удерживают соединения слишком долго) или размером пула, слишком маленьким для нагрузки — и часто несоответствием между лимитом пула ColdFusion и собственным max_connections базы данных. Исправление состоит в том, чтобы найти утечку или медленный запрос, правильно подобрать размер пула в соответствии с ограничениями базы данных, включить проверку соединения, ограничить таймауты и отслеживать активный и максимальный c.