Настройте Tomcat для нескольких одновременных запросов SOAP - PullRequest
2 голосов
/ 27 февраля 2012

Я очень новичок в Tomcat, так что я думаю, что ответ на этот вопрос довольно прост, но Google сегодня не дружит со мной.

У меня есть веб-приложение Java, смонтированное на Apache Tomcat. В то время как приложение имеет главную страницу (для диагностических целей), приложение на самом деле все о интерфейсе SOAP. Ни одному клиенту никогда не понадобится просматривать веб-страницу сервера. Клиенты отправляют запросы SOAP на сервер, который анализирует запросы и затем просматривает результаты в базе данных. Затем результаты передаются клиентам снова через SOAP.

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

Как настроить количество одновременных потоков запросов? Моя идеальная конфигурация состояла бы в том, чтобы иметь потоки X-запросов, каждый из которых перезагружает себя (то есть вызывает деструктор и конструктор и перераспределяет свое распределение памяти) каждые Y минут или после Z-запросов, в зависимости от того, что произойдет раньше. Мне сказали, что для этого можно настроить IIS (хотя у меня также нет опыта работы с IIS), но как бы вы сделали это с Tomcat?

Я бы хотел иметь возможность перезапускать потоки, потому что Tomcat, кажется, захватывает память при поступлении запроса и не освобождает его, что означает, что я получаю случайные (но не согласованные) ошибки пространства кучи Java, когда мы приближаемся к ограничение памяти (которое я уже настроил на 1 ГБ на сервере 2 ГБ). Я не уверен на 100%, связано ли это с утечкой памяти в моем приложении или просто с тем, что используемые мной инструменты используют много памяти.

Любой совет будет с благодарностью.

Спасибо, Rik

1 Ответ

1 голос
/ 27 февраля 2012

Tomcat по умолчанию может обрабатывать до 150 одновременных HTTP-запросов - это полностью настраивается и, очевидно, варьируется в зависимости от спецификации вашего сервера и приложения.

Однако, если ваше приложение должно обрабатывать «всплески»соединения, я бы порекомендовал изучить минимальные и максимальные "запасные" потоки Tomcat.Это потоки, активно ожидающие соединения.Если ожидающих потоков недостаточно, Tomcat должен выделить больше (что приводит к небольшим накладным расходам), поэтому вы можете увидеть задержку.

Кроме того, взгляните на мой ответ на этот вопрос, в котором описано, какнастройте соединитель:

Потоки соединителя Tomcat HTTP

Кроме того, обратите внимание на базовую настройку JVM - особенно в отношении накладных расходов на выделение кучи и времени приостановки GC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...