Tomcat - Настройка maxThreads и acceptCount в коннекторе Http - PullRequest
7 голосов
/ 16 ноября 2011

В настоящее время у меня есть приложение, развернутое с использованием 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, будут ли циклы проверять пул на наличие свободного потока ...?

Ответы [ 3 ]

2 голосов
/ 12 июня 2012

Обратите внимание, что коннектор HTTP предназначен для входящих HTTP-запросов и не связан с JDBC. Возможно, вы хотите настроить пул соединений JDBC отдельно, например, свойства соединения для соединителя JDBC: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

0 голосов
/ 16 ноября 2014

Сохранение значения maxActive (для пула соединений дБ) меньше, чем maxThreads (то есть количество одновременных потоков), имеет смысл в большинстве случаев. Вы можете установить acceptCount на более высокое значение в зависимости от того, какой трафик вы ожидаете на своем веб-сайте и насколько быстро может быть обработан один запрос.

0 голосов
/ 08 мая 2013

Если ваше приложение не обрабатывает запрос в том случае, если оно напрямую подключается к базе данных на основе http-соединения, вам следует настроить пул соединений JDBC на основе того, что программное обеспечение вашей базы данных настроено на / может обрабатывать, а ваши максимальные потоки на что Ваше приложение / оборудование может справиться.

...