вы описываете эффект называется запросом очередями. По умолчанию 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, который начинается с приложения
Это не ошибка, это ее особенность. В каком случае вы хотите не кэшировать запросы? –
Нет проблемы с этой функцией, если она не кэширует около 1000 запросов, которые будут выполняться в течение первой миллисекунды после запуска приложения. Это заставляет систему, которая имеет ограниченную память, вызывать OutOfMemoryExceptions. – aQuip
Хорошо ... Я понимаю проблему сейчас. Вы имеете в виду OutOfMemoryErrors. –