Determining runtime memory usage by a service [Urgent]

Hi,

Is it possible to determine the runtime memory usage of a service. Currently I am having one interface where I need to store large amount of data in pipeline. Curently it is not creating any problem. But at run time, many instances of this service will be invoked parallely. I need to determine whether there is any possibility of ISMem exception occurance.

So, if it is possible to determine the memory usage by a service, then it can be compared with JAVA_MAX_MEM and can be analyzed? Please let me know if am wrong in analyzing.

Basically, the service handles the DB look up on different tables and stores the values in pipeline and then populates this value into the output file.

So I need to analyze the performance impact due to parallel processing of the service and sql query execution performance as DB table size increases.

Thanks in advance…

Regards,
Shriraksha A N

Hi Shriraksha,

I have not tried this but think this will work in your case.Please let us know if this resolves your issue.

Open the following file in WMIS\IntegrationServer\packages\WmRoot\pub\stats-general.dsp(these .dsp’s are running when you open the IS home page.) in wordpad.
and search for “%invoke wm.server.query:getStats%” .This wm service seems to be returning the status details of the server as well as services.
You need to figure out the o/p variables for the service and edit the memory section accordingly to get the service specific memory usage.

Thanks,
Amol.

I know that we can get the memory usage of the server as a whole but I am not sure if it is possible to get the individual service memory usage from the IS Admin page. You can see the number of times it was executed, Last ran etc along with the service thread count of services.

To get the Last ran time and the count you can refer to the service that Amol referred to but if you want to get the service thread count you can use the Statistics API on the IS.

long x=Statistics.getServiceThreadsCount();

Cheers,
Akshith

Hi Amol, Akshit

Thanks for the reponse…

But if you open the IS Admin console, we can able to see Used memory, Total memory and Free memory. Are these releted to JAVA_MIN_MEM and JAVA_MAX_MEM? Also, the percentage memory used calculation is quite unusual. It shows the % memory used above 80% even when none of the services are running. Are the system threads consumes this much memory?

Regards,
Shriraksha A N

I don’t think, there is an option to find the memory utilized per service, however, another thought is to look at what Integration Server’s stats.log shows during the service execution times. You’ll have to Parse the stats.log and observe the memory utilization during the times when you ran your service.

And I believe, the IS memory would be usually around 50% immediately after start up as well (based on your MAX MEM size and the number of packages) as all the packages, configurations will be loaded into the IS Run time memory while the server is up and running. IF it shows nearly 80% you might have to revisit the MAX memory configured on your side. At times, if IS GC does not happen efficiently also, it causes the used memory to be relatively high, in which case, you may have to restart the server.

Hi,
In IS, we can’t check individual service usage and even from the back end there is no possibility. For better test cases, kindly suspend/stop other services for time being when the test service is running and do the test multiple times. Hope, it may give you some guess on memory utilization.

Thanks,