Могут ли исключения NullPointerException вызывать проблемы с производительностью Tomcat после того, как они прекратились? - PullRequest
1 голос
/ 15 сентября 2009

Одно из моих приложений работает на экземпляре службы Windows Tomcat 5.5, работающем под управлением Java 1.6. У нас есть проблема в коде, когда приложение создает исключение NullPointerException, если время ожидания SOAP-запроса истекло.

Сегодня утром у нас возникла проблема, когда компонент на другой стороне запроса SOAP был недоступен. Результатом было около десяти тысяч исключений NullPointerException. После возобновления работы неисправного компонента исключения прекратились. Однако мы заметили, что наше приложение все еще работает медленно.

После перезапуска службы Tomcat производительность приложений сразу улучшилась. Я считаю, что это просто удобное совпадение, но мои товарищи по команде скептически.

Возможно ли, что все эти NPE вызвали проблемы с производительностью в Tomcat, но спустя много времени после исключения прекратились?

Спасибо!
IVR Avenger

Ответы [ 3 ]

2 голосов
/ 15 сентября 2009

Существует ряд возможных проблем:

  • Исключения вызвали утечку памяти.
  • Исключения вызвали бесконечный цикл в некоторых потоках.
  • Перезагрузка приложения привела к утечке памяти.
  • HotSpot оптимизирован для случая сбоя исключений (должен быстро разобраться).
0 голосов
/ 16 сентября 2009

Tomcat регистрирует всю активность в вашем случае «Десять тысяч NullPointerExceptions» Один из способов отследить производительность - попытаться поймать это исключение и проигнорировать. Очевидно, что это не решение, но вы можете попробовать то, что происходит.

0 голосов
/ 15 сентября 2009

Я не думаю, что NPE вызовет какие-либо проблемы, но исключение может вызвать проблемы, если не обработано должным образом.

Например, у нас была похожая проблема, когда у нас было много исключений. У нас были глобальные объекты сессий, которые содержат все пользовательские сессии. Обычно мы очищаем его, когда запрос завершен. Однако, мы не делали блок finally, поэтому он не был очищен в случае исключения. Это вызывает утечку памяти и замедляет работу сервера.

Tomcat, как правило, становится быстрее после перезапуска, поэтому он может быть нормальным, в зависимости от того, насколько вы улучшены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...