cancel
Showing results for 
Search instead for 
Did you mean: 

JDBC ERROR - Channel has reached maximum concurrency

Former Member
0 Kudos

Hello Expert,

I'm having some problem in our production environment. We are getting below error in production almost everyday.

com.sap.aii.af.ra.ms.api.RecoverableException: Channel has reached max

imum concurrency (5,000 concurrent messages) and no free resource foun

d within 5,000 milliseconds; increase the maximum concurrency level


Where is this 5000 number comes from? What should I do to avoid this error? We have lot of JDBC communication channel with heavy load.

I have checked maximum concurrency parameter and maximum wait pool time. What would be the optimal value to set for those 2 parameter.

If we set maximum concurrency parameter value > 1, then what should be the value of poolWaitingTime.

I have checked all the forum discussion and also check the note for this problem. I want to know the values of each parameter to avoid this problem.


Thanks,

Arjuna Shrey.

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

I'd like to share my experiences for this issue.

since 2 days I struggled with this problem.

In the end I found the reason:

The configuration of database is different between PROD and DEV.

in PORD there is a parameter of MS SQL database: failoverPartner = 192.....2. but in DEV not.

Therefore, I suggest you to check the configration of Database too.

baskar_gopalakrishnan2
Active Contributor
0 Kudos

>Where is this 5000 number comes from? What should I do to avoid this error? We have lot of JDBC communication channel with heavy load.

This is a typical problem for high volume jdbc messages. Since you have lot of jdbc channels and when they are working concurrently for different interfaces, they consume db connections from the pool and not being released back when some channels required to create connection during that time.

Few cents..

1) Sometimes doing stored procedure at the db level could avoid creating multiple connections for different tables of  complex query than using jdbc adapter.


2) You might have to analyse the message volumes of individual interfaces and decide giving max connections to those channels accordingly. This way you can make use of the existing connections effectively during the high load time.

3) For low volume messages, you might want to choose disconnect db connection after every transaction option in the channel. This might help. The main reason is db connections after service becomes stale for sometime in db and they will get released later. This option disconnect the connection explicitly. But this cannot be used for high volume messages.

Hope that helps.



Former Member
0 Kudos

Hello Baskar,

1) We are using Stored procedure

2) If I want to increase max connection, then what will be the value of poolWaiting time.

     Because If max concurrency parameter = 1, then channel will wait indefinite time until it becomes          available.  If so, then why I am getting , channel has reached maximum?

     Where 5000 number comes from in the error message.

rajasekhar_reddy14
Active Contributor
0 Kudos

Have you checked my replay.

If you have created many JDBC channels finally you end up gtting this error.

Ser Poolwait time as mentioned in my earlier response and set max concurrency to 3 in communictaion channel.

Regards,

Raj

baskar_gopalakrishnan2
Active Contributor
0 Kudos

> I want to increase max connection, then what will be the value of poolWaiting time. 

     Because If max concurrency parameter = 1, then channel will wait indefinite time until it becomes          available.  If so, then why I am getting , channel has reached maximum?

     Where 5000 number comes from in the error message

As I had mentioned before set the max concurrecy value based on the message volume of individual interface. You can set max concurrency to some higher value , example 10. This does not mean that your adapter initially creates 10 connections. It will create connection upto 10 for the peak message volume time. The problem here is that created connections are not being released back quickly to the pool. So you get this problem after some time.  Also creating so many channels are not good idea. You might also check with DB about 5000 number. I guess your DB admin sets the maximum number of connections to be allowed 5000 in the database configuration side.

Please Refer SAP Note 831162, 1473299 for understanding Max concurrency & pool waiting time and for setting values.

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi ,

Set poolwait time 150000 .

I would request you to increase max receiver paramter value to 20 for JDBC receiver , because at a time JDBC adapter can perfrom 5 parlel operations on data base at max. so if you increase the paramter value to 20 then it can perfrom 20.

But creating mutliple JDBC receiver channles not a right idea because evrery channel consumes the connection hence you will get max concurrency issue more oftnely.

Regards,

Raj

Former Member
0 Kudos

Hi Raj,

What is max receiver parameter value? Is that J2EE property or on communication channel?

How about maximum concurrency parameter?