4 Production Features in Payara Server 5 You Might Not Know About

Payara

If you’ve upgraded to Payara Server 5 or are considering using Payara Server in production, here are 4 production features you might not know about – but should.

 

1)Payara Server Can Detect and Log Slow SQL Queries Executed Via a Connection Pool.

The Slow SQL logger monitors all queries executed on the connection pool and if they exceed a configurable execution time in seconds, a warning message is logged into the server log. The warning message (see below) logs the SQL query and the stack trace to the code executing the query. This enables rapid diagnosis, pinpointing the exact lines of code to investigate.

 

To configure slow SQL logging via the administration console, navigate to the connection pool’s Advanced Properties tab and specify the Slow Query Log Threshold time in seconds. A value of -1 disables logging of slow queries.

 

1

 

2)Payara Server Can Display Real-Time Statistics from the System Shell Using asadmin.

From within a system shell, we may run the asadmin monitor command to display real-time statistics. The –type parameter specifies which monitoring component should be monitored:

asadmin> monitor --type=jvm

 

This command will log real-time data in intervals (every 30 seconds by default). We may redirect the output of the command to a file to archive monitoring information. There are 4 type of statistics we can monitor (arguments to –type parameter):

  • servlet 
  • httplistener
  • webmodule
  • jvm

 The command asadmin help monitor will provide detailed information about the monitor command.

 

Using asadmin, we can also access all the monitoring data by executing the following command:

 

asadmin> get --monitor server.*

 

This command will return all available server and application monitoring data. This might easily be several hundred lines of text. Of course, we can use a more precise filter to limit the amount of data:

 

asadmin> get --monitor server.transaction-service.*

Or we may request data only about a specific module, for example:

 

asadmin> get --monitor server.transaction-service.committedcount-count

 

These commands provide exactly the same amount of information that is available through the REST interface. The last command corresponds to the following URL: http://localhost:4848/monitoring/domain/server/transaction-service/committedcount.

 

3) Payara Server Comes with a General Notification Service Which Includes the Request Tracing Service.

The Request Tracing Service provides tracing facilities for multiple protocols and process communications done by the components of deployed applications.

 

The service helps users to detect application slowness and performance degradation by logging requests that exceed a given threshold. The trace data from long-running requests gives insight to solving bottlenecks and other performance issues.

Because Request Tracing (and other monitoring) services depend on the Notification service to output their data, both the Notification service itself, and at least one notifier, must be enabled for any data to be recorded. If this does not happen, then the data will be discarded.

 

Below is a sample output from enabling the request tracing service in the admin console:

 

{
"traceSpans": [
{
"operationName": "processContainerRequest",
"spanContext": {
"spanId": "5148919a-2413-4cbd-af6c-8cb469f8b0ec",
"traceId": "e7ad7db6-b626-4995-aa10-e2e6a073033e"
},
"startTime": "2018-04-10T11:15:50.018+01:00[Europe/London]",
"endTime": "2018-04-10T11:15:50.164+01:00[Europe/London]",
"traceDuration": "146000000",
"spanTags": [
{ "Server": "server" },
{ "Domain": "domain1" }
]
},
{
"operationName": "authenticateJaspic",
"spanContext": {
"spanId": "374aefba-60ce-4011-98c5-9ade69eeeaeb",
"traceId": "e7ad7db6-b626-4995-aa10-e2e6a073033e"
},
"startTime": "2018-04-10T11:15:50.018+01:00[Europe/London]",
"endTime": "2018-04-10T11:15:50.019+01:00[Europe/London]",
"traceDuration": "1000000",
"spanTags": [
{ "Context": "" },
{ "AppContext": "__asadmin " },
{ "AuthResult": "true" },
{ "Principal": "admin" }
]
},
{
"operationName": "processServletRequest",
"spanContext": {
"spanId": "fd66fafe-a741-408c-b99a-cb7a963c07ac",
"traceId": "e7ad7db6-b626-4995-aa10-e2e6a073033e"
},
"startTime": "2018-04-10T11:15:50.019+01:00[Europe/London]",
"endTime": "2018-04-10T11:15:50.164+01:00[Europe/London]",
"traceDuration": "145000000",
"spanTags": [
{ "referer": "[https://localhost:4848/common/index.jsf]" },
{ "QueryString": "configName=server-config&bare=true" },
{ "host": "[localhost:4848]" },
{ "Class": "javax.faces.webapp.FacesServlet" },
{ "Method": "GET" },
{ "URL": "https://localhost:4848/payaraExtras/requestTracing/requestTracing.jsf" },
{ "accept-encoding": "[gzip, deflate, br]" },
{ "accept": "[*/*]" }
]
}
]

 

4) Payara Server Provides Support for Custom SQL Trace Listeners.

A SQL Trace Listener is registered against a data source and is called after each method call made on the JDBC connection pool.

 

SQL Trace Listeners allows developers to track all calls to the database and can be used to develop custom auditing, error handling or monitoring components. SQL Trace Listeners can be enabled globally on a data source if the class that implements it is on the server’s classpath, or can be enabled on application specific data sources by including them in the application’s WAR or EAR.

 

Configuring SQL Trace Listeners Using the Payara Server Administration Console

 

SQL Trace Listeners can be enabled on a JDBC connection pool through the administration web console. Navigate to the Advanced Tab of your connection pool by selecting the JDBC → JDBC Connection Pools → <Your Connection pool>.

 

Proceed to add the fully qualified class name of your SQL Trace Listener implementation class in the SQL Trace Listeners field:

 

4-1

 

Payara Micro also supports SQL Trace Listeners which brings powerful operational diagnostics to your microservices platform. Take a look at the instructions in the technical documentation to write a custom trace listener in the Payara Platform.

 

Want to learn more about using Payara Server in production? Take a look at our In Production Resources.

 

If you need help migrating to Payara Server or supporting your production Payara Server environment, consider our commercial support services.

 

If you’re not yet using Payara Server, download the open source software and try it out!

 

Comments (0)

Post a comment

Your email address will not be published. Required fields are marked *

Payara needs the contact information you provide to us to contact you about our products and services. You may unsubscribe from these communications at any time. For information on how to unsubscribe, as well as our privacy practices and commitment to protecting your privacy, please review our Legal & Privacy Policy.

Related Posts

payara qube logo 5 minutes
Payara

Payara Cloud Is Now part of Payara Qube family of Unified Platforms for Enterprise Java

Payara Cloud is becoming part of Payara Qube family of Java application deployment runtimes. This move reflects how the […]

Payara promotional graphic showing transition from Spring to Jakarta EE, including technology logos, a code icon and arrows leading from Spring to Jakarta EE. 6 minutes
Jakarta EE

From Spring Boot To Jakarta EE 11: How Payara Starter Eases The Transition

If you’ve been living in the Spring ecosystem, you’re used to fast project setup. Spring Initializr gives you a […]

Promotional graphic for a podcast episode titled “Why Open Source is the Future of Business Innovation - A conversation with Arun Gupta”. The podcast is hosted by Payara Community. The right side features a photo of the speaker, Arun Gupta, labeled as a “VP, Developer Experience at JetBrains”. The design uses dark blue and teal backgrounds with coral and fish illustrations. 2 minutes
Community

Payara Podcast – Why Open Source is the Future of Business Innovation – A Conversation with Arun Gupta

Open source is no longer a developer-only concern — it’s at the heart of how modern businesses innovate, build […]