Проблемы с производительностью приложений, развернутых на Tomcat - PullRequest
0 голосов
/ 17 февраля 2020

Недавно мы перенесли все приложения наших компаний с Websphere на сервер приложений Tomcat. В рамках этого процесса у нас было проведено тестирование производительности.

Мы обнаружили, что в нескольких приложениях в Tomcat наблюдается снижение производительности более чем на 100%. Мы увеличили количество потоков, настроили параметры источника данных для соответствия нашему тесту, а также увеличили размеры буфера чтения и записи на сервере Tomcat.

Application Background:

-> Spring Framework   
-> Hibernate   
-> Oracle 12c   
-> JSPs   
-> OpenJDK 8

Мы уже проверили базу данных и не обнаружили проблем с производительность в БД.
Загрузка ЦП во время выполнения теста всегда меньше 10%.
Настройки кучи -xms = 1.5G to -xmx = 2G, и он никогда не использует более 1.2G.
У нас также есть два узла и HAProxy сверху, чтобы сбалансировать нагрузку. (У нас нет веб-сервера на месте).

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

Оцените это если вы можете поделиться любыми пунктами, которые будут полезны в поиске проблемы.

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Возьмите дампы потока и проанализируйте, в какой части приложения возникли проблемы, и начните устранение неполадок.

Следуйте этой статье для подробного объяснения анализа дампов потока - https://dzone.com/articles/how-analyze-java-thread-dumps

0 голосов
/ 20 февраля 2020

Существует множество возможных причин упомянутой проблемы, и на самом деле не так много данных для работы. Независимо от этого, как прокомментировал kann, хороший способ начать - это собрать дампы потока java процесса.

Я бы также спросил, работаете ли вы на тех же серверах или недавно настройка серверов и как они выглядят (с точки зрения ресурсов). Есть ли какие-либо ограничения ЦП / памяти / ввода-вывода во время теста?

Что касается Xmx, звучит так, будто вы не передаете флаг -XX:+AlwaysPreTouch в JVM, но я бы посоветовал вам посмотреть на него, как он заставьте JVM обнулить память кучи при запуске вместо того, чтобы делать это во время выполнения (что может означать снижение производительности).

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