2016-09-15 4 views
-1

Я сделал веб-приложение Java, размещенное Tomcat. Это можно найти на этом URL.Первый ответ медленный Tomcat

Проблема, с которой я столкнулся, заключается в том, что всякий раз, когда я посещаю страницу, первый раз это занимает около 10 секунд, а каждый раз после нее она занимает всего 100-500 мс. Я бы сказал, что улучшение скорости происходит из-за кеширования браузеров, но не очень, когда я обновляю кеш (ctrl + shift + r). Я получаю тот же быстрый ответ.

Затем через некоторое время, около 5 минут, я снова захожу на страницу и снова медленно.

Вы можете попробовать некоторые тесты сами по URL при условии, изменив значение параметра поиска т.д .: 1050, 1051, 1052, 2670, 4000, 2300, 2200.

Также интересный факт, который я заметил, заключается в том, что независимо от того, насколько большой полезный груз (сравните 1050 с 2300), время почти всегда одинаковое. 9-10s. Поэтому я предполагаю, что что-то вроде Java Server должно готовиться, и это то, что занимает время.

EDIT:

Я был первым думать, что это может быть связано с Java/Tomcat того, чтобы загрузить некоторые ресурсы, а затем через некоторое время + -3-5mins снова, потому что по какой-то причине разгрузив его. Но, как я писал выше, даже если я изменил строку запроса URL (которая вызывает другой запрос SQL во время выполнения), она снова загружается долго. Может ли проблема быть связана с БД? Я использую MySQL.

EDIT2:

Причина, почему это быстрее, скорее всего, кэширование сервера. Я на 95% уверен, и это потому, что я сделал пару экспериментов, таких как попытка на двух компьютерах и т. Д. (Нет, это не кеширование браузера). Тогда я понял, что если это быстро, только когда он кэшируется, то, что занимает так много времени, является фактическая строка кода .executeQuery. Это занимает 10 секунд, хотя точно такой же запрос через клиента, такой как WorkBench занимает всего 0.285s. Поэтому я попытаюсь использовать PreparedStatement или экспериментировать дальше.

+0

Является ли ваше приложение размещенным на экземпляре Tomcat, который обслуживает несколько веб-приложений (а не только ваших)? Существует вероятность, что Tomcat закрывает ваше приложение (чтобы сохранить ресурсы), когда оно не используется кем-либо, поэтому требуется некоторое время, чтобы перезагрузить его, когда вы его посещаете. –

+0

Хм, да, на нем есть один сервер tomcat и несколько приложений. Есть ли способ держать его открытым и готовым для каждого приложения? –

+0

Я не знаю, можете ли вы открыть его, но вы можете спросить своего веб-хостинг-провайдера. Возможно, это не проблема. –

ответ

0

Содержимое составляет 200kB. Вам нужно оптимизировать его в передней и задней части.

Основная проблема заключается в вашем бэкэнд. Проверьте, почему это так долго.

В интерфейсе вы можете включить сжатие gzip. Проверьте документацию tomcat о том, как это сделать. Это уменьшит размер загрузки.

Второй раз, вероятно, быстрее для вас из-за кеширования браузера. Проверьте код ответа в Firebug, если ответ 304, он кэшируется. Ответ 200 означает, что он был загружен с сервера.

+0

Как я уже говорил, во второй раз это быстро, и это связано не с кэшированием браузера. Я попробовал эксперимент, где я сделал запрос, а затем мой коллега сделал запрос на тот же URL-адрес, и это было немедленно. Как я уже упоминал, те же самые 10, даже если они небольшие или большие полезной нагрузки, неважно. Так что нет, это не размер полезной нагрузки. Хотя спасибо за попытку. –

+0

Используйте профилировщик для анализа узкого места. Могло быть много разных проблем, которые могли бы изменить время процесса, например, кэширование jpa, использование памяти, а не правильно настроенный пул подключений db ..... – tak3shi

+0

Это может быть кеширование сервера. –