У меня есть веб-приложение, написанное с использованием Java-сервлетов.Я использую Tomcat 7 в качестве своего движка сервлетов, но ранее использовал Glassfish и имел ту же проблему.
На данной странице есть раздел «статистика», который обновляется каждые 5 минут.Для генерации статистики требуется около 30 секунд из-за размера используемых таблиц MySQL.
Когда я загружаю страницу, я показываю кэшированную статистику.После того, как все на странице было отрендерено, я очищаю, а затем закрываю поток вывода.Я тогда обновляю статистику.Таким образом, ни один пользователь не должен ждать ~ 30 секунд для загрузки страницы и обновления статистики после того, как страница уже полностью отправлена.
Проблема в том, что если я обновлю страницу во время выполнения запросастраница не загружается до тех пор, пока запрос не будет завершен, что означает, что, хотя у первоначального пользователя нет никакой задержки, после этого возникает длительная задержка.
Почему приложение эффективно останавливается?Разве Tomcat не может использовать другой рабочий поток для обработки запроса, даже если один поток все еще занят?
Спасибо.