2015-11-30 3 views
2

У меня проблема с кэшированными запросами в Tomcat. Когда я (повторно) запускаю свое приложение, Tomcat начинает кэшировать входящий запрос до того, как приложение будет полностью инициализировано.Предотвращение запроса Tomcat от кеширования во время запуска

Есть ли способ остановить Tomcat так себя вести? Я нашел параметр «cachingAllowed» в -Element, но я не уверен в этом.

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

Большое спасибо,

Марк

+0

Это не ошибка, это ее особенность. В каком случае вы хотите не кэшировать запросы? –

+0

Нет проблемы с этой функцией, если она не кэширует около 1000 запросов, которые будут выполняться в течение первой миллисекунды после запуска приложения. Это заставляет систему, которая имеет ограниченную память, вызывать OutOfMemoryExceptions. – aQuip

+0

Хорошо ... Я понимаю проблему сейчас. Вы имеете в виду OutOfMemoryErrors. –

ответ

1

вы описываете эффект называется запросом очередями. По умолчанию Tomcat запускает и слушает настроенный порт. Когда приходит первый запрос, он запускает и запускает соответствующее веб-приложение. Все запросы, которые появляются перед запуском приложения, блокируются, и обработка начинается с момента запуска приложения.

Приведенное выше описание является немного упрощенной, потому что в зависимости от типа соединителя Tomcat и конфигурации существуют различные области, в которых запросы могут блокированные и выстраивались в очередь:

  • обработку поток ожидает приложения для запуска. Предел контролируется maxThreads.
  • Запрос ожидает обработки. Предел контролируется maxConnections.
  • Входящее TCP-соединение принимается операционной системой, но еще не обработано Tomcat. Это контролируется acceptCount. (BTW: Я установил это значение 0)

Как указано, как параметры могут быть детализированы, могут отличаться в зависимости от типа разъема.

Так вы можете контролировать пределы и понимание того, что происходит. Я думаю, что ваш эффект улучшится с установкой acceptCount на 0.

На самом деле, та же проблема и вопрос был задан по адресу: how to make http port to open after application startup in tomcat На самом деле нет реального ответа. Это похоже на то, что Tomcat не предназначен для работы. Решения я могу думать, но не все же попробовали себя:

  • Найти способ, чтобы начать Tomcat с коннектором инвалидов (я не нашел параметра для этого ...) и включить его после запуска с помощью JMX
  • переключателя к встроенному Tomcat или Jetty, который начинается с приложения
+0

Привет. Большое спасибо.Я попытаюсь установить значения вышеупомянутых настроек. – aQuip

Смежные вопросы