Application Server Monitoring
Application server monitoring tracks the health, performance, and resource utilization of the application server that hosts and runs your business logic. It helps ensure optimal throughput, identify bottlenecks in application components, and maintain stability under load.
Why do we monitor Application Server?
- To ensure application server can handle expected concurrent users.
- To identify performance bottlenecks in threads, memory, sessions, and pools.
- To detect errors, slow transactions, and application issues early.
- To validate scalability, stability, and reliability of the application.
What do we monitor?
JVM &
Memory
Memory
Threads
Sessions
Connection
Pools
Pools
Transactions
Errors &
Exceptions
Exceptions
Garbage &
Uptime
Uptime
Application Server Architecture (Under Test)
Monitoring the application server within the overall system.
Clients
Web / Mobile Users
Load Balancer
Nginx / HAProxy
Web Server
IIS / Nginx
Application Server
WebLogic / JBoss / WebSphere
Tomcat / WildFly
Tomcat / WildFly
Application (WAR / EAR)
Database Server
Oracle / MySQL /
SQL Server
SQL Server
External Services
APIs / Third Party
Monitoring Agents
Collect metrics, logs and health from application server
Key Application Server Metrics
JVM Heap Usage (Used %)
58.6 %
Threshold: < 80%
JVM Non-Heap Usage (Used %)
32.4 %
Threshold: < 70%
Active Threads
215
Threshold: < 500
Active Sessions
1,250
Threshold: < 5,000
Response Time (Avg)
285 ms
Threshold: < 1000 ms
Important Counters
Deployed
Applications
Applications
12
Total Applications
Running
Applications
Applications
12
Applications in Running State
Datasource
Pools
Pools
8
Configured Data Sources
JDBC
Connections (In Use)
Connections (In Use)
45 / 200
In Use / Max
Thread Pool (In
Use)
Use)
215 / 500
In Use / Max
Error Rate
0.35 %
Errors in Last 5 Min
Detailed Application Server Metrics
| Category | Metric | Description | Why it Matters | Threshold / Recommendation |
|---|---|---|---|---|
JVM & Memory |
Heap Memory Usage | Used heap memory percentage | High usage can cause OutOfMemoryError |
< 80% |
| Non-Heap Memory Usage | Used non-heap memory percentage | Includes metaspace, code cache, etc. | < 70% | |
| GC Time (%) | Time spent in Garbage Collection | High GC time impacts performance | < 10% | |
| GC Count | Number of garbage collection events | Frequent GC can impact throughput | Monitor trend | |
Threads |
Active Threads | Currently executing threads | High threads may cause contention | < 80% of Max |
| Peak Threads | Highest number of threads used | Indicates load handling capacity | Monitor trend | |
| Thread Pool Queue Length | Threads waiting in queue | High queue length increases response time | < 20 | |
Sessions |
Active Sessions | Currently active user sessions | High sessions consume memory | Based on capacity |
| Session Creation Rate | Sessions created per second | High rate may impact resources | Monitor trend | |
| Expired/Invalid Sessions | Expired or invalid sessions count | Indicates configuration or usage issue | Monitor trend | |
Connection Pools |
JDBC Connections (In Use) | Currently used DB connections | High usage can exhaust connections | < 80% of Max |
| JDBC Connections (Idle) | Idle connections in pool | Too high may waste resources | Monitor trend | |
| Pool Wait Time (Avg) | Average time to get connection | High wait time slows application | < 100 ms | |
Transactions |
Transactions / Sec | Number of transactions per second | Indicates application throughput | Based on baseline |
| Long Running Transactions | Transactions running > threshold | Can lock resources and degrade performance | 0 | |
| Transaction Response Time (Avg) | Average time to complete transaction | High response time impacts users | < 1000 ms | |
Errors & Exceptions |
Application Errors | Total application errors | Indicates issues in business logic | 0 |
| HTTP Error Rate | 4xx and 5xx error percentage | High rate affects user experience | < 1% | |
Deployment & Uptime |
Server Uptime | Application server running time | Indicates stability | High uptime expected |
| Application Uptime | Application running time | Ensures application availability | High uptime expected | |
| Deployment Count | Number of deployments | Frequent deployments may cause issues | Monitor trend |
Alert Thresholds (Examples)
| Metric | Warning | Critical | Action |
|---|---|---|---|
| Heap Memory Usage | 70% | 80% | Investigate memory usage |
| Active Threads | 70% of Max | 85% of Max | Thread dump & Analysis |
| JDBC Connections (In Use) | 70% of Max | 85% of Max | Check DB & Pool config |
| Response Time (Avg) | 800 ms | 1000 ms | Investigate slow transactions |
| Error Rate | 1% | 2% | Check logs & errors |
| Transaction Time (Avg) | 1000 ms | 2000 ms | Optimize slow queries |
Best Practices
Set realistic thresholds based on capacity and historical data.
Monitor trends, not just single values.
Correlate with Server, Database, and Network metrics.
Use alerts to detect issues early and act proactively.
Regularly review logs and thread dumps.
Effective application server monitoring ensures high availability, optimal performance, and a better end-user experience.