RFC Connections Mapping Scalability
As more Multi-source universes are configured with a JCO connection to SAP Netweaver BW (BW) Data Sources, we need to closely examine how the connections can be managed for scalability. This page discusses some of the best practices to implement for efficiency and optimization.
A manual configuration of connection from a BI Universe to BW it is preferred to specify one SAP Netweaver BW RFC Destination per connection. This is required if the environment has is clustered or involves a message server. Then there will be a need to scale out the environment. This page discusses some of the reasons for requiring this configuration and the scalability of creating this connection type.
First we look at how multiple BW RFC destinations should be mapped in the BI Connection. Then view a few examples of correct and incorrect configurations. Then we discuss increasing the concurrency of callbacks for parallel queries and a quick list of the additional parameters important to controlling the performance of these connection types.
In this page Manually Configuring the RFC connection we demonstrated how to create a mapping of the BW RFC destination to the SAP Business Intelligence Connection through the Adaptive process server (APS.) The APS contains the Data Federation Service that enables this connection type. It is always recommended to have a data federation service on its own Adaptive Processing Server alone and assign sufficient memory. For BW connections this can be 20-32 GB. Each RFC destination must be mapped to one APS. When a user session is established and a multi-source query is sent via the APS-RFC destination connection, the connection will process the entire query including all the possible sub-queries. Every time a user session is created it would be assigned an APS and all queries from that user session will be directed to the same APS. The load balancing occurs when the user session initiates.
For Scalability you can create several APS in your system or cluster. Each of the APS should be mapped to one RFC destination only. There is a one to one configuration. Each APS connection in this configuration is selected at random for the query processing. For example this is correct:
As you can see one unique AdaptiveProcessServer(Data Federator Service) maps to one RFC Destination.
The Information Design Tool now provides the programIDMapping directly in the connection.
Now the question may arise what about a Round Robin approach to selecting multiple APS to RFC connections? Can I map one APS to Multiple RFC destinations? The answer is no. The mapped to one RFC destination only for example this is incorrect:
Here you see multiple AdaptiveProcessingServers(Data Federation Service) mapped multiple times to an RFC Destination. In this configuration the APS_A=RFC1 and APS_B=RFC3 are never used. The service will always select the last APS in this formation. There is no other selection criteria.
Increasing the number of connections per mapped Overview
Each BW query is optimized and several subqueries may be generated. To increase the number of threads or connections that your query server can use to process the BW subquery set the parameter jco_server_connection_count to 10. The default is set at 2, so for every connection a maximum of 2 threads is created. This is a session parameter and will override the System parameter.
To edit this parameter.
Launch the Data Federation Administration Tool
Note that the user account must have Administrator credentials
Open the Connector Configuration Tab
Right Click on the Connection name (previously created in the Information Design Tool when a multisource data foundation was created)
You will see this screen generated:
Locate the jcoServerProperties line (this must always be larger than the global system parameter MAX_CONCURRENT_MEMORY_CONSUMING_QUERIES in System properties.
Enter the value jco.server.connection_count=10 (This must be max of 10)
Uncheck the USE box.
Increasing the MAX_CONCURRENT_MEMORY_CONSUMING
This is the maximum number of parallel queries. The BW data source is an instensive memory consuming query. A call is made to the BW Netweaver and the infocube is pulled into memory where the data federation service then performs the join procedures. This is a system or global parameter that increases the number of parallel queries that may be run. But remember it must be less than the connector property for jco_server_connection_count=10
Enter a small value here, if you have many large queries.
Enter a large number if you have many small queries.
Additional System parameters to optimize the BW Query
Set the Java virtual machine (JVM) on the server properties (see the Administrator guide)
EXECUTOR_TOTAL_MEMORY is set as a percentage of total memory or a fixed value that a query execution can use.
EXECUTOR_STATIC_MEMORY for the minimum memory allocated to operators at initialization.
MAX_CONCURRENT_MEMORY_CONSUMING_QUERIES sets the number f queries that can run concurrently.
MAX_CONCURRENT_MEMORY_CONSUMING_OPERATORS sets the number of operators that consume memory run in parallel. Decrease this amount if your operators are consuming too much memory: (Joins, Cartesian product, orderby, groupby, )
- packageSize – increasing package size increases speed, but also uses more memory
Adding parameters in the AdaptiveProcessingServer (Data Federator Service)
Set the Java virtual machine (JVM) on the server properties in CMC (see the Administrator guide)
- Set the Memory on the command line with –Xmx and –Xms
- Set Thread pool size to the number of expected queries to run at the same time
Adding AdaptiveProcessingServers (Data Federator Service) (APS-DF)
If mapping a single AdaptiveProcessingServer to one RFC Destination and now we can only have 10 connectors or threads running on each. How many of the AdaptiveProcessingServers should be added per node?
Additional APS-DF servers can be added. The limit is based on available resources. You will need sufficient RAM memory and CPU's to handle the load. But is this the optimal configuration? How many users will possibly be using the connectors? It's possible to have too many APS-DF. It is sometimes better to have less servers, but increase the memory. Remember that all processing for a session is done on a single APS-DF. Increasing this will not boost performance.
Link to DFAT Sizing Guide:Sizing GUIDE