Есть ли способ повысить производительность с помощью монолитного приложения websphere liberty?

#java #websphere-liberty

Вопрос:

Существуют ли какие-либо существенные способы повышения производительности приложения websphere liberty.

Приложение является монолитным с примерно 40 веб-приложениями и одним ухом. Никаких веб-служб REST, кроме сервлета и кода jsp.

Версия продукта: 19.0.0.3

Вероятно, около 300 тысяч строк Java-кода.

Загрузка запросов может занять 30-40 секунд.

Он работает под управлением Java8.

Это машины для разработчиков, Mac Book Pro, ядро Darwin версии 19.6.0. 16 гигабайт оперативной памяти.

Вот некоторые из особенностей:

 <featureManager>
    <feature>appSecurity-2.0</feature>
    <feature>jaxrs-2.0</feature>
    <feature>jsp-2.3</feature>
    <feature>localConnector-1.0</feature>
    <feature>jaxws-2.2</feature>
    <feature>ldapRegistry-3.0</feature>
</featureManager>
 

Ответ №1:

В дополнение к тому, что было упомянуто, я бы предложил взглянуть на две полезные функции Liberty, которые могут помочь вам найти замедление в вашем приложении:

Дает вам результат, аналогичный:

 [12/15/14 18:24:29:528 IST] 0000002e EventLogging       I BEGIN requestID=AAY6TalVDTO_AAAAAAAAAAK # eventType=websphere.servlet.service # contextInfo=TradeWeb | TradeScenarioServlet
[12/15/14 18:24:29:531 IST] 0000002e EventLogging       I BEGIN requestID=AAY6TalVDTO_AAAAAAAAAAK # eventType=websphere.servlet.service # contextInfo=TradeWeb | TradeAppServlet
[12/15/14 18:24:29:532 IST] 0000002e EventLogging       I BEGIN requestID=AAY6TalVDTO_AAAAAAAAAAK # eventType=websphere.servlet.service # contextInfo=TradeWeb | /quote.jsp
[12/15/14 18:24:29:533 IST] 0000002e EventLogging       I BEGIN requestID=AAY6TalVDTO_AAAAAAAAAAK # eventType=websphere.servlet.service # contextInfo=TradeWeb | /displayQuote.jsp
[12/15/14 18:24:29:534 IST] 0000002e EventLogging       I BEGIN requestID=AAY6TalVDTO_AAAAAAAAAAK # eventType=websphere.datasource.psExecuteQuery # contextInfo=jdbc/TradeDataSource | select * from quoteejb q where q.symbol=?
[12/15/14 18:24:29:547 IST] 0000002e EventLogging       I END requestID=AAY6TalVDTO_AAAAAAAAAAK # eventType=websphere.datasource.psExecuteQuery # contextInfo=jdbc/TradeDataSource | select * from quoteejb q where q.symbol=? # duration=12.537ms
[12/15/14 18:24:29:556 IST] 0000002e EventLogging       I END requestID=AAY6TalVDTO_AAAAAAAAAAK # eventType=websphere.servlet.service # contextInfo=TradeWeb | /displayQuote.jsp # duration=22.171ms
 
  • Время запроса — которое определяет запросы как медленные, если для выполнения запросов требуется более 10 секунд, или как зависшие, если запросы не завершаются за 10 минут.

Ответ №2:

Предполагается, что WebSphere Liberty сам по себе должен быть легким и быстрым. Поэтому, вероятно, вам следует искать такие области, как

  1. Серверу выделено достаточно памяти.
  2. Примеры использования, которые занимают 30-40 секунд, необходимо профилировать, чтобы понять, какая часть обработки занимает время. Это может привести к тому, что вы потратите много времени на обработку базы данных из-за плохо выполняемых запросов.

Вы можете использовать инструмент jvisualvm для выполнения профилирования процессора и памяти, чтобы понять горячие точки. Для получения более полных данных, связанных с производительностью, вы также можете использовать javamelody с открытым исходным кодом, который очень легко интегрируется с любым приложением EE и сервером EE

Ответ №3:

Вы можете ознакомиться с поваренной книгой IBM WebSphere Application Server по производительности. Некоторые советы являются общими для WebSphere traditional и Liberty, а некоторые являются уникальными для различных продуктов. Там есть секция Свободы.

Ответ №4:

Как и в других упомянутых ответах, вам следует ознакомиться с кодом приложения/производительностью и взаимодействием сервера с внешними ресурсами, а также с поваренной книгой по производительности.

Однако вы также используете версию, которая отстает от последней версии более чем на 30 выпусков и даже не подходит для исправлений безопасности. В этих 30 выпусках Liberty продолжала значительно повышать производительность, поэтому я настоятельно призываю вас перейти на последнюю версию.
Кроме того, если вы еще этого не сделали, вам следует попробовать использовать JDK с J9 JVM, так как это обеспечивает повышение производительности при использовании с Liberty.