Я запускаю сервер Tomcat/Spring на своей локальной машине, и у меня запущена другая программа, которая быстро отправляет запросы POST на сервер один за другим. Каждый запрос вызывает обновление удаленной базы данных Postgresql и завершает (очищает код ответа) до отправки следующего.Сервер перегружен
После примерно 100 запросов сервер начинает принимать больше ответа. После примерно 200 запросов сервер перестает отвечать на запросы и принимает всю доступную обработку, пока я ее не убью вручную, либо в Eclipse, либо в диспетчере задач Windows.
В какой-то момент сервер выплюнул ошибку в сборке мусора, но я не видел его последние несколько раз, когда я пробовал это. Когда я увидел ошибку сбора мусора, я добавил 5-секундную паузу каждые 20 запросов, чтобы попытаться предоставить серверу время для сбора мусора, но, похоже, это не помогло.
Как я могу отслеживать и разрешать причину этой перегрузки сервера?
У вас есть утечка памяти. –
@ KarthikeyanVaithilingam - это было действительно полезно, указал мне в правильном направлении, спасибо. Я смотрю http://stackoverflow.com/questions/40119/how-to-find-a-java-memory-leak now ... –
Используя профилирование JVM Explorer, я отследил проблему до созданных сеансов каждый запрос, но никогда не утилизируется. Недействив каждую сессию в конце связанного с ней запроса, проблема памяти исчезла. –