[Progress Communities] [Progress OpenEdge ABL] Forum Post: How does remote ABL broker distribute client requests to available servers?

Status
Not open for further replies.
D

dbeavon

Guest
We are attempting to open our databases to remote connections for the first time (remote ABL). I've tried to do as much of my homework as possible so that I understand some of the related parameters (-n -Mn -Mpb -Mi -Ma -prefetch* and so on). We also have a consultant who has given us some initial recommendations on the parameters to use for our primary broker (which supports ABL) and backup (which supports only SQL). While reviewing his recommendations, I was cross-referencing them to KB articles to try to understand them. Here is one example of a KB article that attempts to explain these parameters. Progress KB - How to set the values for the startup parameters -Ma, -Mn and -n What is really hard for me to visualize is the model that underlies some of the parameters -Mpb and -Ma and -Mi. My understanding is that the "broker" for the ABL logins will look at the -Mi and as soon as it reaches that number of concurrently connected clients, it will start a new server until it reaches the -Mi and the process will repeat. Once all the servers are created (as limited by -Mpb), then additional clients (above -Mi) will start to pile into the existing servers until they all reach the value of -Ma. At that point the database will start rejecting new client connections. Does this sound accurate? Hopefully I have things right so far. Based on this alone, it strike me that there is quite a lot of responsibility placed on the DBA to know the number of clients and how quickly they might connect and how many might be using the database concurrently. Assuming I'm understanding this correctly so far, the next question is about the available remote servers (-Mpb). Given that we are running 11.7.4, are these all single-threaded processes? I've heard that they are, and that they use some kind of cooperative multi-tasking in order to allow work to be done in a serialized way on behalf of all the client connections (-Ma). Please let me know if I misunderstood. My biggest concerns are related to the "broker" for ABL. How does it distribute new client connections to the available servers (-Mpb) once all of the servers have all been started? Does it just round-robin the incoming clients? Or does it try to somehow determine if a server is busy first? If there are a number of different (-Ma) client connections within a given server, I'm assuming that some of them may not be acting in a neighborly way (eg. generating a large result set of NO-LOCK records, or waiting on a database lock, or performing a large update). If this is the case then it seems to me that the other client connections within the same server might suffer performance penalties. And the performance penalties will be compounded by the number of over-active clients that are hosted in a single server... Worse yet, if the "broker" has no idea that the server contains these over-active clients, then it may drop new ones in place and make matters worse. Can someone please tell me if there is any in-depth KB or whitepaper that explains how client load is distributed among the servers? Given that the OE DBA is responsible for managing all those different startup parameters then it makes sense that Progress should give us some understanding about how they impact the behavior and performance. Otherwise there will be quite a lot of trial-and-error. It would also be nice to know if there are any metrics being tracked by the remote servers like total number of clients requests processed, and average duration (ms or fractions of ms) to process each request. Any help to understand this would be greatly appreciated. I am guessing that there may be whitepapers that elaborates on this stuff but I haven't found it yet. Thanks in advance, David PS... Here is a small section of the KB article that has raised the most concern, especially since we are currently starting out with an -Ma of 100. Set -Ma as high as possible but lower than 11 (increasing above 10 clients per server may degrade performance, decreasing it under 5 will require more server processes creating unnecessary overhead). The default value for -Ma is 5 and its maximum value is 2048, this value represents the maximum number of queued client processes....

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