Migrated from NovaTec Jira. Originalticket: INSPECTIT-832
Brief description: Provide a metric for the number of parallel access to a method.
Usecase: Often it is important to understand the user load on the system. There are different metrics that could help here: The session count (indicating the number of users that are logged in), The number of requests (indicating the overall load of the system). But usually very interesting is also the number of parallel user requests.
Introscope provide a ConcurrentInvocation sensor. This sensor allows to count the number of concurrent events. Assuming the following:
The concurrent invocation sensor of Introscope will provide the number of times that the selected method was invoked while one method invocation to the same method is still running. So in the above situation, for interval 1, introscope reports "4" (as the method A was four times invoked by thread B while the invocation of Thread A was still running) and 2 for interval 2.
This approach is quite technical and often it occurred that the user do not understand what the metric is telling him. In fact just read the number. Interval1 reports 4 and Interval 2 reports only 2, so in the beginning there were 4 parallel users (which is wrong!). In fact the level of parallel access is even bigger in interval 2 as the parallel time was bigger.
So what information do we want to offer to the user, or from another perspective what does the user want to know:
How many different users executed the method in a given interval
How high was the parrallel access?
Provide the number of threads within the defined interval that executed the methods overlappingly
Assume the above description happens within one interval, the metric would report the following:
avg: (1+2+2+2+2+3+....) / amount -> 70/37 = 1,89
Build the above information on either the agent or the server (most likely the server is the better place) and calculate the result.