As shankar suggested ESB & BPS are the ones which caused problems with their internal thread pools. I tested both CPU time and Thread live time per request per tenant for Application Server and Data Services Server inside the CarbonStuckThreadDetectionValve. I created few web services, web apps and data services to test them out. Worked well in measuring both CPU & Live time for a request.
I was able to measure the CPU time of a BPEL process which consist of a busy loop inside the process with the help of waruna. I captured the CPU time inside ode/Scheduler-simple , call() method inside SimpleScheduler class. With the help of KasunI and IsuruU I was able to measure the CPU time for ESB as well. I created a class mediator which consist of a busy loop and was able to capture the CPU time for both in/out sequences. ServerWorker handles the requests and ClientWorker handles the responses. I was able to capture CPU time as well as Live time per transaction for ESB as well. Both classes contain run() methods and its where I was able to capture the CPU time. Since ESB uses non-blocking threads, and nhttp, it seems only way to capture the CPU time per thread is inside the run() methods. Since I was able to measure the CPU time for AS, DSS, BPS, ESB for almost all the cases, I tested out some Load tests for ESB. I sent 100,000 echo requests to AS via a proxy from ESB. The test statistics revealed, it may take a considerable amount of time to capture the CPU time for each request (overhead). Since ESB mostly concern on the performance, it might cause some latency issues if I'm to include the code inside it. I didn't find any alternative way to capture the CPU time per tenant/thread inside ESB either. Also if I'm to proceed with this I wanted to know how I can use this statistics to publish to BAM2. One alternative to use the same approach as it is used in bandwidth measuring. It has used a TransportStatistics queue in tomcat to add the statistics and usage agent in SLive retrieves them and publishes to BAM. Even though I can add data captured inside the tomcat valve to a queue in tomcat.ext/transport/statistics (CpuStatisticsContainer or whatever) I'm not sure whether I can add data from ode (BPS) or synapse (ESB) to the same queue in tomcat. Thanks, Lasindu _______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
