[progress Communities] [progress Openedge Abl] Forum Post: Active Client Count Increasing...

Status
Not open for further replies.
D

dbeavon

Guest
This is largely a repeat of another posting from a year ago: https://community.progress.com/community_groups/openedge_development/f/19/t/24276 I think that user received about half of the answers I was looking for. I am using .Net open clients (Progress version 10.2B) against a state-free classic application broker, which the clients are directed to via Name server. While checking out the very high number of client connections on the server , we found out that active client number is increasing even though there are very few *agents* are actually processing requests . For example active client now is 1000 only only two agents are in use. When I checked connection to broker using asbman with -clientdetail all option, I found out that all these unused connections are having agent PID and agent port as NULL and connection state is connected. For those connections where agents are processing requests, agent port and PID is having valid value and connection state is Sending. I am not able to find out reason why these connections are not getting disconnected. Based on the prior forum answers by "lecuyer" I wanted clarifications for some follow-up questions: By default, is it true that a client will continue to consume client connections (will use "SESSION" terminology going forward) indefinitely (when it can't find an available one that is not in use)? IE sessions will never time out or be closed after lack of use? And the only way to clean up the connections is to close the client application? (I may be confused by the "proper" behavior, as intended by "PROGRESS.Session.connectionLifetime" - in our experience we are not seeing sessions get closed). Lecuyer says the "size of the (session) pool should roughly correspond to the maximum number of simultaneous requests from that client on that server". IE. It sounds like it is not straight-forward to predict how many client sessions should be used by a given application, even if the application only uses a single shared state-free connection to the broker. Am I understanding that correctly? It sounded like the unpredictable nature of these sessions is compounded when using persistent procedures over state-free appservers, and when using async or multi-threaded calls. Is there any way to *disconnect* these client sessions from the broker side (as discovered via asbman -clientdetail)? I am not seeing asbman commands for disconnecting individual state-free client connections. Of course we can always trim agents, but that doesn't affect the connected clients. Similarly, we can stop the entire broker, but that is disruptive to client applications and causes them to throw exceptions and die. From the .Net client app side is there any way for us to discover the number of client sessions being used within a process (similar to the client-side equivalent of asbman -clientdetail)? Or how long they have been in use? Thanks for help with these questions. We have been successfully using state-free appserver for over a year but the client sessions are not as well-behaved as we would like them to be, especially now that we are using them more than before. (PS. we do try to follow the common best-practices for disposing IDisposables, etc. The only thing we know of that is deliberately held open thru-out the lifetime of the application is the State-Free Connection object).

Continue reading...
 
Status
Not open for further replies.
Top