Virtual memory issue while running asynchronous procedure on

Posted by nilesh_pharate on 02-Feb-2016 03:35

I am using open Edge 10.2 B on Red Hat 6. To achieve multi-threading I am running an internal procedure in asynchronous way on progress app-server. Here I am processing around 800K transactions on 80 agents. As execution proceeds, I observed, main process which is calling procedure on app-server in asynchronous way, is becoming slow.

When I checked resource utilization of that main process, It is showing constant increase in virtual memory usage(around 1M increase per min). As this Virtual memory usage increasing, process execution is becoming slower.

I guess this is issue with memory leakage. I suspect this is due to async-request-handle used while running internal procedure in asynchronous way on app-server. Even I tried to delete this handle after use, but it wont help.

Anyone case across such scenario? your comments/inputs are most welcome.

All Replies

Posted by James Palmer on 02-Feb-2016 04:56

Are there any other handles you create in the code that aren’t being cleaned up? 

Posted by Laura Stern on 02-Feb-2016 08:19

When you call something asynchronously, the performance of the client side caller should not be affected at all by what the asynchronous call is doing.  I presume when you say "I checked resource utilization of that main process, It is showing constant increase in virtual memory", I presumed you are talking about the server process.  But then you say you suspect the async-request-handle which is on the client side.  This is a tiny amount of memory and you get one handle per call.  Yes, you should be deleting it when the request completes, but I doubt that you would see a spike in memory from this in any case, unless you were making thousands of calls.  What is the client side doing while the async routine is running on the server?

Posted by nilesh_pharate on 02-Feb-2016 11:42

@Laura: By main process, I mean client side process which is making asynchronous calls. I also agree that client side process should not be affected by server side process. You are correct, I am making around 100K calls and its increasing memory usage. Suspect issue in handle deletion. Will try to delete the async request handle properly and will update you guys. Thanks for inputs.

Posted by nilesh_pharate on 02-Feb-2016 11:43

@James: Yes, there are some handles used, I am making code changes to clean them up. Will update the status.

Posted by Thomas Mercer-Hursh on 02-Feb-2016 12:14

You have indicated the total volume of transactions ... but what about the rate?  Is that 100K in a minute, an hour, a day?

Posted by nilesh_pharate on 03-Feb-2016 00:21

@Thomas: Transaction processing is not OLTP. Its batch based processing. Transaction records are added in DB in business hours. So at day end, we have 100K transaction available in DB for processing.

Posted by AdrianJones on 03-Feb-2016 03:45

You could try debugging with the option to monitor dynamic objects to see what/when things get left behind per iteration.

see menu in debugger - diagnostics/monitor dynamic objects

Posted by Thomas Mercer-Hursh on 03-Feb-2016 09:23

So, it is a single, large batch which you want to process as quickly as possible.  Does it need to be processed sequentially or could you use multiple client processes to do it in parallel?  The fact that you are using async suggests that strict sequentiality is not required.

Posted by nilesh_pharate on 05-Feb-2016 07:23

@Thomas: It was memory leakage only. We identified some leakage in legacy code and resolved it. Now it is working fine. Processing rate is 500K transaction in one hour on 100 app server agents.

This thread is closed