on 10-23-2007 8:45 PM
We are using NW04 SP20, R3 4.7. I have custom WD App which calls 19 RFCs.
When we try with 10 users in PRD works fine. In our performance testing we tried with 125 users, first couple of users done their part without any problem, after that every one is getting following error message:
"Could not create JCOClientConnection for logical system: SAP_R3******: class <my class>: Please assure that you have configured the RFC connections and/or logical system name properly for this model.
SSO/JCO settings:
max pool size : 100
max conn: 10000
timeout: 60,000 ( msec )
wait time: 30,000 ( msec).
I thought R/3 is rejecting connection as it is reached max RFC connection.
Is some thing went wrong in R3 side.? any solution?
I know that we can close the connection once the call is done, but i wanted to keep connection in the pool becuase of we need to improve the performance.
Best Regards,
Ramana.
Message was edited by:
Ramana Morumpalle
Message was edited by:
Ramana Morumpalle
Hi Ramana,
There could be couple of things possible in this situation.
1)First of all, all the valaues for connection parameters are per user. Assuming you are using SSO,
If your application has all RFCs in one Model, then your application needs only ONE connection. But if you have 19 models, then your application needs 19 connections PER user.
Therefore 19*100 = 1900 connections are created and left open just for this user in the pool.
So, that makes 1900 * 125 total connections in the pool for 125 users (resource crunching).
2)Max connection, again, is a per user value for which your value is 10000. So in your case, and in the assumption that you've 19 models and so 19 connections needed just for this app, the max connections the user will use is 19, let's say 30 to be safe (if he works in multiple browser windows with the same application).
3)Connection timeout specified how long the pool waits to close a connection. A higher value meaning, if the pool is busy, a user waits 60secs (in your case) for a new connection.
4)Wait time is ofcourse how long a user can wait before he gets an error with connection. In your case its 30 secs.
Solution:
For point 1: Reduce the pool size to a safe value, like the above, say 30-40 (its per user)
Calculate number of connections on the basis of no.of models in your app multiplied by number of multiple application instances (in different windows) multiplied by a safe factor of 2.
For point 2: Reduce the max connections a user can make (this is very important if you dont want to close the connection in your app for some reason)
For point3: Reduce the timeout to 30 secs
For point4: Increase the wait time to 60secs so that there's less chance for a user getting the exception.
Check the parameter gw/max_conn in R/3 in transaction SMGW or check the R/3 instance profile for max number of concurrent RFC connections (usually 500)
Above all, its a combination of these parameters that render max availability of your application.
Use resources sparingly
Hope that helps.
Regards,
Rajit
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
101 | |
13 | |
13 | |
11 | |
11 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.