В настоящее время у меня есть приложение, развернутое с использованием Tomcat, которое взаимодействует с базой данных Postgres через JDBC.Запросы очень дороги, поэтому я вижу тайм-аут, вызванный Tomcat или Apache (Apache находится перед Tomcat в моей конфигурации).Я пытаюсь ограничить количество подключений к базе данных до 20-30 одновременных подключений, чтобы база данных не перегружалась.Я сделал это, используя конфигурацию \ .., установив maxActive в 30 и maxIdle в 20. Я также увеличил maxWait.
В этом сценарии я ограничиваю использование базы данных, но я хочусоединения / запросы для пула внутри Tomcat.Apache может принимать 250 одновременных запросов.Поэтому я должен убедиться, что Tomcat также может принимать это множество, но обрабатывать их соответствующим образом.
Tomcat имеет две настройки в файле конфигурации HTTP Connector :
- maxThreads - "Максимальное количество потоков обработки запросов, создаваемых соединителем Http, который, следовательно, определяет максимальное количество одновременных запросов, которые могут быть обработаны."
- acceptCount - «Максимальная длина очереди для входящих запросов на подключение, когда используются все возможные потоки обработки запросов. Любые запросы, полученные при заполнении очереди, будут отклонены».
Так что я предполагаю, что если яустановите maxThreads на максимальное количество соединений JDBC (30), затем я могу установить acceptCount равным 250-30 = 220.
Я не совсем понимаю разницу между потоком, который ОЖИДАЕТ соединение JDBC соткрыть из пула, а не поток, который находится в очереди ... Я думаю, что поток в очереди потребляет меньше циклов, тогда как работающий поток, ваПрименительно к пулу JDBC, будут ли циклы проверять пул на наличие свободного потока ...?