Search code examples
javawebsphere-liberty

Is there a way to improve performance with a monolithic websphere liberty application?


Are there any significant ways to improve the performance of a websphere liberty application.

The application is monolithic with about 40 web applications and one ear. No REST web services but servlet and jsp code.

Product version: 19.0.0.3

Probably about 300k lines of Java code.

The requests may take 30-40 seconds to load.

It is running Java8.

The machines are developer machines, Mac Book Pro, Darwin Kernel Version 19.6.0. 16 gigs of ram.

Here are some of the features:

<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>

Solution

  • In addition to what was mentioned, I'd suggest to look at two useful Liberty features that might help you to locate slowdown in your application:

    • Event logging - which allows you to track requests going through Liberty/application components.

    Gives you output similar to:

    [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
    
    • Request timing - which detects requests as slow if the requests require more than 10 seconds to complete, or as hung if the requests do not complete in 10 minutes.