I want to make use of this discussion as a document so that everyone can understand better knowledge of queues and process servers in CPS.
Please find the below discussion to get it clarified.
Initially am clear about the relation between systems,queues and process servers.
As per my understanding there is one to one relationship between systems, queues and process servers.
However reading many documents got confused like whether we can have multiple queues or process server for a particular systems.
I will try to explain here.
The basis of remote connections from CPS are Process Servers. These act as the connection from CPS to a remote system like a SAP system, a server (platform agent), AS400 or another ERP system like Oracle EBS, Peoplesoft etc.
To setup the connection to a SAP system, we create a new SAP system in which we register the connection information, all registered clients and other rules (event sync, job sync, return code mappings etc). This will automatically already predefine a Process Server and Queue for you to use.
Now we know that the Process servers are the remote connections but we can only specify a Queue when we start a job. This is what a Queue is, it is the Queue for job submissions on one (or more!) Process servers. The nice thing about Queues is that you can set all sorts of restrictions on them (like maximum number of allowed parallel jobs, time windows etc) and you can create as many as you like. This way you can setup for instance one Queue for high priority jobs and one Queue for low priority jobs, both connected to your ECC process server. Now when load is high, you close the low priority queue without effecting the high priority jobs.
Another scenario is that you have a job that is triggering lets say 100 child jobs dynamically. Using a job control rule you can intercept these childs and push them in a limited queue to make sure only 10 child jobs are running concurrently and you don’t disturb the regular processing in your remote SAP system.
Does that make sense?
Thanks for providing detailed explanation.
Let me explore the same in practical and comeback to you for more clarifications.
As per your suggestion i have created 2 Queues for the single SAP system Process server.
However am not sure how do we classify the jobs with respective to Queues as while running the ABAP Program it prompts for the system details alone not the Queue.
Do we can have only one process server for an SAP system?
Yes you are right: the connection from CPS to the remote SAP system goes through one Process server. You CAN setup multiple, but that does not make sense at all.
The abap program prompts you indeed for the instance and client, however, when you click Next, Next you are still able to change the Queue field for the job. In fact, you can leave the instance and client fields empty (they are NOT mandatory fields (white)) and only specify the Queue field in the scheduling tab of the submit wizard.
Just to add what Gerben already said,
You can have multiple queues pointing to a single process server (i.e SAP system).
You can differentiate the queues based on the priority as Gerben mentioned or you can also differentiate by using each queue for each funtional module. For example, let say you have HR jobs running in HR queue, MM jobs running in MM queue and FI jobs running in FI queue – and all these jobs running in one SAP System.
n case, you get a request to hold all the MM jobs until further notice, you can just hold the MM queue and rest of the jobs will get executed in the SAP system. If you had all jobs in one queue, then you may have to manually hold each MM job.
You can submit an HR job to MM queue, it will still get executed, the classification is just for our ease to operate.
And vice versa also is possible, meaning you can point one queue to multiple process servers (for example, ERP, BW, PI systems). For example, you can create a queue and submit all SAP maintenance jobs to that queue. The queue, will then check the SID/Client information and submit that job to that particular SAP system. The admin guide states that this scenario will be helpful during planned/unplanned scenario of an active-active high availability system. How ever i do not see how this would pan out for SAP (because we already connect to message server, which does load balancing).
Thanks for the detailed explanation. However please find the image attached which i took from Admin guide of CPS. It mentioned like we can have multiple queues as well as process servers.
Yes it is possible to have multiple queues and process servers.
I hope you are clear with the first scenario:
1 Process Server –> N queues (HR, MM, FI example above).
You can create many queues and have one SAP system as the queue provider.
These queues can be used as a logical separation between functional jobs or a separation based on job priority.
1Queue –> N Process Servers (the following is my assumption, please feel free to correct if it’s wrong)
Let us assume you have three dialog instances on different hosts and you have created 3 process servers, one for each dialog instance using the ASHOST string. (Remember all of them point to the same SAP system though)
In this case, if you assign all these 3 process servers as queue providers to one single queue, i think the Queue decides where to run the background job based on the load information of 3 process servers. I don’t see any other way this scenario being used. Also this is a total waste of two precious process server licenses.
This is possible but useless according to me, because if you have SAP on HA environment, then you should use the MSHOST string and let the message server handle the job requests.
I have also tested a similar scenario once, by attaching two different process servers, say EC1 and PI1 to the same queue. In this case, when you submit an ABAP job, based on the SAP_SYSTEM/CLIENT parameter you supply, the queue executes the job in that particular system. Again, a useless, but a possible scenario.
So in conclusion, if your question about multiple process server/single queue is,
whether it is possible? YES, it is.
But whether it is useful? I doubt it.
You indeed got the concept right and I agree that the scenario you describe should not be used in practice. If you want to do load balancing in SAP you can do this perfectly with one Process Server using the Load Factors on the SAP System object.
But still scenario’s exist where this is useful, in most cases these scenarios are related to Process Servers that are connected to a Platform agent, and not to a SAP system.
One example I implemented at a customer was the following:
– Customer was scheduling reports on an application distributed over 2 application servers. The internal scheduler was both time based as application server bound. This way they had to be very careful scheduling their reports as long running heavy reports could interfere with later scheduled reports.
– The solution was to have 1 queue in which all reports were scheduled with a specified limit (I think max 20 concurrent reports). This queue was connected to 2 Process Servers running on those two application servers. The Process servers were configured to NOT accept any reports anymore when the cpu load hit 80%. This way perfect load balancing was achieved of the reports. With priority the reports came in in the correct order and were distributed over the night causing less issues and with more guarantee that the important reports were correct and finished in the morning.
But you can also think about backup scenarios where you have a set of backup backbone servers where you want to load balance all backup jobs over.
Hope this helps.
Thanks a lot Gerbe for explaining that situation.
I thought the same, Multiple process server<–>single queue must be useful in case of platform agents, but i couldn’t figure out a practical case in time to support that theory.
I think confusion stems only from the SAP perspective.
This document was generated from the following discussion: Relation Between Systems,Queues and Process Servers