EDAS provides a container monitoring function – application diagnosis that collects data to help you detect problems (such as memory and class conflicts) of the applications that are deployed and run inside the Tomcat container.EDAS provides the refined statistics function designed for application containers, which collects statistics on the application running instance based on a range of statistical items, including JVM heap memory, non-heap memory, class loader, thread, and Tomcat connector.Similar to infrastructure monitoring, container monitoring (application diagnosis) lists application-specific single-host data.
The differences are as follows:
- The monitored object of infrastructure monitoring is ECS instances, whereas that of container monitoring is the container where applications reside.
- Application diagnosis supports querying of diagnostic information in single-instance mode rather than cluster mode.
- Infrastructure monitoring has latency, whereas container monitoring is near real-time because statistical computing is not performed on collected data (except memory monitoring data).
To view container details, follow these steps:
Log on to the EDAS console. In the left-side navigation pane, choose Application Management > Applications. On the Applications page, click the name of the target application.
On the Application Details page, click Application Diagnosis in the left-side navigation pane.
Expand the ECS Instances (Instance ID/Name/IP) drop-down list and select an ECS instance.
Click tabs to view the monitoring details of the container.
The Application Diagnosis page contains the following tabs:
GC Diagnosis: This tab includes the GC Diagnosis and Memory sections.
GC Diagnosis: This can monitor some performance metrics of the current instance that have GC according to the instances of the current application, and analyze the GC of current instance according to the selected time range.These metrics help you to judge the health status of an instance of the application, that is, check whether the application has memory leakage or a large object.
- The GC policy of the current instance is -XX:+UseParallelGC or -XX:+UseParallelOldGC.
- FGC refers to Full Garbage Collection while YGC refers to Young Garbage Collection.
- When YGC occurs more than six times or FGC occurs more than 10 times within one minute, and the YGC or FGC number is the largest in the selected time range in this one minute, this one minute is regarded as the most active time for YGC/FGC.
- When the total YGC consumed time in one minute exceeds 100 ms or the total FGC consumed time exceeds 300 ms within one minute, and the total YGC/FGC consumed time in this one minute is the longest in the selected time range, this one minute is called the time with the greatest YGC/FGC time consumption.
- Memory before and after recycling refers to the memory occupied by the application.
- Memory: Memory is monitored on a per-instance basis. EDAS provides statistics on the heap memory and non-heap memory of the JVM process of the Tomcat container where the application is located.
Class Loading: provides real-time information about JAR package loading.When a JAR package of the application has version conflict, you can use this function to easily locate the path to which the JAR package is loaded, which lowers troubleshooting costs.
- Thread: displays the basic information of all threads of the current JVM process, including the thread ID, status, and name. The statistical fields are native information of JVM.
Connector: The Tomcat connector is indicated by
<Connector />in the XML configuration file of Tomcat. The configuration of each
<Connector />can be considered as a line of pulled information.This view displays the running status of the corresponding connector from the past 10 minutes.
Each connector has a certain number of threads (which forms a thread pool) to process incoming requests. When concurrency or throughput bottlenecks occur, statistics must be collected on the processing status of the connector’s thread pool. For example, an HTTP connector has the following XML configuration:
<Connector port="8080" protocol="HTTP/1.1" maxThreads="250" .... />
Click Thread Pool Information in the Action field next to the connector to view more details.
The preceding figure shows that the application is almost load-free. If the value of “Busy Thread Count” is close to that of “Thread Pool Max. Value”, the system encounters serious concurrency. To resolve this problem, scale up the application or optimize the service code.
Object Memory Distribution: Select System Class, Java Primitive Object Class, and Class Loading Related.Based on the selected three classes, the number of objects, occupied space, and usage percentage of the total system memory are displayed in a pie chart and a list.
Method Tracing: Method tracing is complex. For more information, see Method tracing.
Hot Thread: provides two functions, the retrieval of thread snapshots and the analysis of call statistics. For more information, see the Thread hotspot.
Druid Database Connection Pool Monitor: For more information, see Druid database connection pool monitoring.
Commons Pool: For more information, see Commons Pool monitoring.