Первый запрос к веб-контейнеру, такому как Tomcat, часто загружает сервлет впервые. Фреймворк-фреймворки, такие как AxisServlet, CXFServlet и т. П., Обычно делают целую кучу вещей на этапе запуска. Например, Axis загружает свой внутренний реестр сервисов, подключает их и предоставляет сервисы. CXF делает то же самое, просматривая конфигурационный файл Spring и т. Д.
Итак, первая быстрая проверка - вы должны добавить тег в свой web.xml.
Это на уровне сервлета - другие эластичные ресурсы также могут задерживать первый запрос (например, пулы соединений - фактически любые пулы заполняются впервые).
Конечно, это может быть не единственной причиной - эта трассировка стека показывает соединение SSL. В зависимости от того, где находится ваша веб-служба, возможно, она проходит через шлюз безопасности XML, взаимодействуя со службами безопасности (такими как служба проверки сертификатов OCSP)? «закрепленный сокет» говорит о том, что JRockit JVM достаточно умен, чтобы создавать долгоживущие SSL-соединения там, где это возможно, поэтому может случиться так, что процесс обмена сертификатами займет очень много времени - возможно, конфигурация платформы, которая увеличивает это временное окно
Есть ли другие вещи, которые будут инициализированы между сервером и клиентом? веб-коннекторы к веб-контейнеру (например, Apache + mod_jk), балансировщики нагрузки сервера приложений и тому подобное? Можно очистить лук и проверить его.
В вашей трассировке стека также указано, что у вас есть параллельный пользовательский агент (например, сервер принимает запрос, а затем отправляет исходящий запрос куда-то). Если вы отправляете исходящий запрос на ваш локальный экземпляр (например, клиент отправляет запрос на localhost: 8080, webapp на 8080 отправляет запрос на localhost: 8080 / другое веб-приложение), вы можете истощить ресурс своего контейнера и стать симптомом возможная тупиковая ситуация (т. е. зацикленный запрос в пуле потоков ожидает освобождения для обработки запроса, но все ожидают). Это условие стиля применимо к любому сочетанию веб-сервера / сервера приложений, когда вы поворачиваетесь и делаете сетевой запрос в соответствии с вашими настройками.