07-27-2016 7:50 AM
Hi,
We currently have a number of custom interfaces between BW and ECC that are utilising bgRFC, and having performance issues when the associated queue lengths are very large.
I've read the online help, but am still just trying to get my head around the bgRFC processing and architecture.
I would be grateful if someone could give a quick explanation or overview with regards to:
Thanks very much
Todd
07-28-2016 10:39 AM
Dear Todd,
For your questions, I will answer as much as I can.
For RFCs, we use the construct of a destination to define where to execute the function module.
In case of bgRFC, tRFC, and qRFC, the destination defines where the unit will be executed. The destination is usually not a single server, but it could be. A bgRFC destination could also be a group of application servers - the automatic dispatching of units to these servers is handled by the bgRFC runtime.
We can assign units to virtual queues, which are identified by name and destination.You can see a hierarchical view of the bgRFC with the names of the destinations and queues from transaction SBGRFCMON.
After bgRFC units have been written to the database at COMMIT WORK, they are processed by a scheduler. You can see more configurations in SBGRFCCONF.
Multiple schedulers can be defined to process the destination.
You can specify a value >0 in your configuration. A large number of schedulers can help a system to process more queries in parallel if the system load is heavy. However, if the system load is light, too many schedulers will block each other and reduce throughput.
The bgRFC can be tRFC or qRFC type, so if you need the units within a single queue always processed sequentially, please use qRFC type. Of course, you can configure the destinations/queues to process units in parallel using multiple DIA processes.
Best regards
Helen
07-29-2016 12:03 AM
Thanks very much Helen - really appreciate the response.
Can I add one more query - within the bgRFC configuration, how does the number of open connections affect execution, when using qRFC?
Does it limit the number of units that can be added to a queue, or does it limit the number of queues that can be processed in parallel?
Thanks again
Todd