View cluster and node metrics
The Overview section presents a high-level view of the following metrics:
- Average Response Time: The amount of time, in milliseconds, the node takes to return the results of a request.
- Throughput: Number of requests served by the node at a particular time interval.
- Success/failure: A pie chart showing the distribution of cfms, which were successful and unsuccessful, that were run from the node.
- Errors: A stacked graph, which lists the count of the 400 series and 500 series errors that have occurred in the node.
- Top slow URLs: The execution time (in descending order) of each cfm in the node.
- System information along with information on ColdFusion and Java versions.
- History of thread dumps taken: A table displaying the following information of thread dumps taken at node level. The information contains the following:
- Thread dump ID
- Total threads
- Time stamp
- Actions- Export the dump as a text file.
- History of heap dumps taken: A table displaying the following information of heap dumps taken at node level. The information contains the following:
- Heap dump location
- Time stamp
Top slow URLs
When you click on any url, it takes you to a page, where you can see the following sections:
- Basic info
- Code flow
- CF Server: Contains Async Threads, where view the concurrent requests and status of threads that are queued and running.
- External services
- Cloud services
- Threads: Contains all the threads that were spawned in the request.
The Applications tab in the CF Server page performs Application Monitoring by providing the metrics pertaining to all the applications under a cluster or an individual instance.
At a cluster level, the CF Server page provides an overview of the following:
- Number of instances of the cluster and health percentage.
- A stacked graph, which lists the count of the 400 series and 500 series errors that have occurred across the cluster.
- Top slow URLs with an error distribution across the instances that are part of the cluster.
- ART and throughput graphs for the cluster over time.
The Applications page displays the data captured as part of the Application Monitoring. The page has a dropdown from which you can select the applications that you want to monitor and know the details (maximum of five applications).
For the selected applications, you can view the following:
- The Average Execution Time graph and the health score for each application.
- The load distribution for the selected applications along with an error graph.
The graph is a stacked area that displays the total count of 400 series and 500 series errors that have occurred in any of these selected applications over a period.
Clicking any application from the list of applications redirects to the application detail page, which provides further details about that application, for example,
- An ART graph.
- Top slow URLs/Queries.
- An error graph.
- A pie-chart for distribution of data source calls and external services calls.
- A pie chart distribution of various response codes across the requests made from the selected app.
- An active session count graph and a pie-chart with a distribution of the requests made across the nodes that are part of the cluster.
Monitoring of RunAsync Threads
You can monitor the number of threads that are running in an async operation. Click the cfm running the RunAsync method, and in the CF server tab, expand Async Threads to view the concurrent requests.
There is also a new tab, Threads, which contains all the threads that were spawned in the request.
To monitor the various ColdFusion related non-request metrics, navigate to CF Server on the left panel. The CF Metrics data is always captured at a node level for a ColdFusion server, which is refreshed after every 15 seconds.
For a node, you can find the tab CF Metrics once you navigate to CF Server.
For a cluster, to view the metrics of the node, click a node that is listed on the CF Server page.
The metrics captured here are controlled by the settings available in CF Admin. The throttle, requests and thread-related controls are present in the pages Server settings and Request tuning. The cache data on the caching page and database-related changes can be made for each individual database under its advanced settings to control its pool size.
The metrics captured are
- Throttle Data
- Request Queue Data
- Sessions Data
- Data source connection metrics
- CF thread/Asynch thread metrics
- Template/Component/Query Cache size
The throttle-related data is captured when the throttle threshold is reached as specified in the CF Admin setting. On hovering, it shows the following values.
- Average throttle queue size: The average value of the requests queued over a period , when there is not enough throttle memory available.
- Average throttle memory: The value of the throttle memory used by the requests after being throttled because they have reached the threshold specified in the admin setting.
A stacked graph that shows an average value of the requests that have been queued. The types of requests captured here are CFM templates, CFCs, and web services (SOAP services). The final value seen in the graph is the sum of all these three types of requests. This too reflects the data based on the setting in the ‘Request Tuning’ page of CF Admin. Apart from Queued data, it also shows the Running and Timed-Out requests on hovering over the graph.
* The data does not get captured on a Standard edition of ColdFusion.
Template/Component/Query cache size
CFThread/Asynch thread metrics
The graph displays the running and queued counts of the ColdFusion threads that are running. The threads are spawned using the cfthread tag or the equivalent thread functions in ColdFusion. The data too can be controlled with the setting on Request Tuning page.
This graph also shows the number of Asynch threads that were spawned.
Datasource connection metrics
A stacked bar graph that displays the connection-related data, for the data sources accessed by various requests, like Maximum connections available, Average open connections and Total connections made for that data source.
In the graph you can view the active and expired session counts over a period of time.
Bytes In/Sec: Bytes incoming per second
- The number of bytes ColdFusion read in the last second (not an average).
Bytes Out/Sec: Bytes outgoing per second
- The number of bytes ColdFusion wrote in the last second (not an average).
The section provides you all the system-related metrics.
See the consumption percentage of the system and the JVM in a time series graph.
You can monitor memory consumption of the server in the Server tab. You can see the system memory consumption and usage of memory of all running processes in the server. The red dashed horizontal denotes the baseline usage.
Check how many packets were sent and received as well as the speed of your network at a particular time.
See the disk read and write metrics at any time.
The Performance Monitoring Toolset provides detailed metric about JVM, which is explained in the section. The following are the metrics that you find in JVM.
- Heap and non-Heap memory along with distribution
- GC distribution graph
- Count of GC
- Thread and Thread-Pool Metrics
- Class Loading Metrics
Heap and non-Heap memory along with distribution
The JVM performs memory management and can have a significant effect on your performance depending on how you configure the JVM. The most important settings for the JVM are the initial heap size and maximum heap size. The initial heap size represents the amount of memory that the JVM uses on startup; the maximum heap size represents the amount of memory that the JVM can use. You can modify these settings in the ColdFusion Administrator on the Java and JVM Settings page.
Garbage collection is the process of recycling memory that was assigned to objects that a program no longer references. The chart below displays two types of GC.
- Minor collection: Garbage collection that occurs in the young generation. In ColdFusion, minor collections collect unreferenced local scope and variable scope variables.
- Major collection: Garbage collection that occurs in tenured generation. In ColdFusion, major collections collect all unreferenced session scope variables.
There is a histogram of the number of Garbage Collections over time. If you hover on each bar on the graph, you can see the number of GCs for that particular duration.
Thread and Thread Pool metrics
The graphs indicate the number of requests that the server is processing and the number of requests that are awaiting allocation of an application server thread to begin execution.
If the graph indicates that many requests are queued, increase the size of the thread pool.
In the graph below, Thread Pool gives you an aggregated view of the number of threads that are active.
Class Loading Metrics
Shows the number of classes that are loaded or unloaded in a particular duration. For example, if in a UDF, there are ten methods, then ten classes get loaded along with the cfc and the cfm.
Take thread dumps
For any node in a cluster,you can take thread or heap dumps. Click the button for:
- Taking thread dump
- Taking heap dump
- Triggering GC
To view the stack trace of the thread, click any thread state.
Click any thread group to view similar stack trace.
Heap memory is the runtime data area that the Java VM allocates memory for all class instances and arrays. The heap can be of a fixed or variable size.
- Eden: The pool from which memory is initially allocated for most objects.
- Survivor: The pool that contains objects that have survived the garbage collection of the Eden space.
- Old gen: The pool that contains objects that have stayed for some time in the survivor space.
Non-heap memory includes an area shared among all threads and memory required for the internal processing or optimization for the Java VM. It stores meta space, code cache, and compressed cache.
To take a heap snapshot, click Heap Dump and the dump generates successfully.
Any ColdFusion application uses threads to process a request. Large number of concurrent users spawns more threads. When two or more threads use the same resources, a contention between the threads occurs. Thread dump is used to analyze thread contention issues and it provides information on the exact status of each thread and information about the call stack of each thread.
Note: You may sometimes see incorrect data for Heap and Non-Heap charts. For example, if you had set MaxMetaSpaceSize as 192 MB, the Performance Monitoring Toolkit may show the same as 1456 MB.
To take a thread dump, click Thread Dump. You can see the following thread status:
In Performance Monitoring Toolset, you can also trigger GC. The garbage collector manages the allocation and release of memory for your application. Every time you create an object, the runtime allocates memory for the object from the managed heap. If an address space is available in the managed heap, the runtime continues to allocate space for new objects.
When the garbage collector performs a collection, it checks for objects in the managed heap that are no longer being used by the application and performs the necessary operations to reclaim their memory.
To take a Heap Dump, click the button labeled Heap Dump. The heap data gets saved in the location, <ColdFusion_Home/cfusion> in a file admin-1532006781545.hprof.
To trigger Garbage Collection, click GC.
In the section, you can see what caching engine is being used. You can use the following:
- Custom plugin
You can also see the cache regions of both the application and the server.
If you choose the option, Cache regions of server, you can see the following details:
If you choose the option Cache regions of applications, you can see the cache stats of the application that you had specified in the file Application.cfc.
To monitor currently active requests, queries, and ColdFusion threads, click CF Server on the left panel. For a node, you can find the tab Active Monitoring once you navigate to CF Server.
You can monitor the following options:
- Async Threads
For a cluster, click any individual node that you would see listed on the ColdFusion Server page to view its Active Monitoring details.
The list displays active requests/CF Threads/Queries and also Async Threads and Sessions.
Along with the additional details, there are certain actions that can be taken on these active requests and active CF Threads.
For active requests, you can view the Java stack trace of the thread for a particular request to know the state of that request.
From the stack trace, you can also view the time taken and other parameters, for example, a request that is causing a server to execute slowly. For such cases, you can kill the request.
Similarly, you can also kill any active ColdFusion thread.