cancel
Showing results for 
Search instead for 
Did you mean: 

Time outs issue in Synchronous Interface

Former Member
0 Kudos

Hi Experts,

We have an SAP ECC to JDBC synchronous interface. We are using 7.1.

A jobs triggers Proxies from SAP which fetches data from JDBC and returns to SAP in a synchronous call.

The issue happens mostly after downtime's where in when the SAP jobs are triggered after the downtime we run into fetch huge amount of data and face time out issue resulting in failed messages.

What steps can be taken to prevent this?

What I want is how can we fetch huge amount of data in a single synchronous call without the interface failing.

What all timeout parameters should we work on?

Can setting XMBWS.Timeout in the receiver JDBC Channel solve the issue?

Thanks,

Shaibayan

Accepted Solutions (1)

Accepted Solutions (1)

marksmyth
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi Shaibayan,

Check the document available below:

How to Investigate Timeouts in Synchronous XI PI Scenarios

http://scn.sap.com/docs/DOC-16238

Regards
Mark

former_member192343
Active Contributor
0 Kudos

Hi, Shaibayan,

Martk is right, this document is very usefull for aby timeouts issues.

Former Member
0 Kudos

Hi Mikhail,

I tried using sqlquerytimeout 1000 but it did not work out. I am now planning to change xiadapter.inbound.timeout.default parameter along with sqlquerytimeout and see if this works.

Thanks,

Shaibayan

former_member192343
Active Contributor
0 Kudos

and what is the error description?

Former Member
0 Kudos

Hey,

It is exactly the same as given in Mark's reference document.



XIAdapterFramework MESSAGE.GENERAL com.sap.aii.af.ra.ms.api.MessageExpiredException: Message 48c56d90-f764-0172-0000-0000ac11fc6e(INBOUND) expired


Thanks,

Shaibayan

Answers (3)

Answers (3)

iaki_vila
Active Contributor
0 Kudos

Hi Shaibayan Chakrabarti,

Definitely it is not a good idea to retrieve a huge messages and it is worse in synchronous call. Why not to set out a different scenario?:

1. You want to fetch data, this seems a good example for sender JDBC and to use async communication with better performance with huge messages. Can you not to set an extra field, a status field?

2. Following with timeout problem, can't you reduce you huge select in several select with few weight?, can you talk with the DB and to establish a table index to reduce you select time?

You should think the timeout can be raised in the sender proxy, abap engine in PI (ICM parameter rdisp/max/runtime), in the adapter engine or endpoint application, what is the exact exception and where is it localized?

Hope this helps.

Regards.

former_member182412
Active Contributor
0 Kudos

Hi Shaibayan,

Why dont you limit the number of records fetch from database. Check below blog for reference.

Regards,

Praveen.

Former Member
0 Kudos

Hi Praveen,

Ours is Oracle db so the solution may not work. Also it is synchronous and the data is related w.r.t batch numbers. So we cannot restrict the search result. The only solution seems to be increasing the timeout parameter.

Regards

Muniyappan
Active Contributor
0 Kudos

how many batch numbers are you sending in one request?

how many times does ECC job triggers the proxy to get all batch numbers information?

Former Member
0 Kudos

Batches are created by users. So if a user creates 1 batch with 1 grid information in it we will fetch only one. However if multiple users creates multiple batches with multiple grids we need to fetch those as well.

Say in 1 job trigger there was no records created in DB so no result.

Before 2nd trigger 1 user creates 1 such record and we fetch it.

During 3rd trigger multiple user creates multiple records and we need to fetch them as well.

So we cannot limit the users from creating the batches. Whenever a user creates a batch in between the Proxy trigger SAP is supposed to get them in the next trigger run.

former_member182412
Active Contributor
0 Kudos

Hi Shaibayan,

Why dont you change the interface to asynchronous and poll database for every 5 minutes and fetch the records. If SAP system is down for some time then all the messages which are already fetched from database will be queued up in PI, after the SAP system is back you can resend all these messages then the messages size will be smaller.

Please let me know if any reason you cannot implement this.

Regards,

Praveen.

Former Member
0 Kudos

Hi Praveen,

This is already in production and there are other related functionalities in ECC which depends on this. So we cannot change it to asynchronous. It is a complete change in design and is not recommended as in that case ECC and even certain DB functionalities needs to be changed.

Moreover this is not a generic problem and only once in a while issue for which we want the timeout to be increased so that we can face this once in a while when it occurs.

I am planning to implement sqlquerytimeout parameter in Advanced tab

Thanks,

Shaibayan

Muniyappan
Active Contributor
0 Kudos

Hi,


Say in 1 job trigger there was no records created in DB so no result.

Before 2nd trigger 1 user creates 1 such record and we fetch it.

During 3rd trigger multiple user creates multiple records and we need to fetch them as well.

can you show us the input xml file?

if multiple user creates it , anyway it will have more records, inside abap you have to split this multiple records into small amount and call the proxy.

For example, let us say if you have 1000 records in your proxy call and you can split it into 200 per. so proxy will call 5

Former Member
0 Kudos

Hi Muniyappan,

Records are created in JDBC. SAP ECC only sends a from date and to date as request which XI converts into a query. This is done by a auto job to send the from date and to date is automatically taken as the current time.

So we cannot control this in ECC. Moreover all such changes requires a number of design changes which we cannot afford now.

Thanks

Muniyappan
Active Contributor
0 Kudos

I did have same issue in the past. 

what is the gap between from and to ? how many records are you getting max?

if the difference is coming 20 or 10 you can make it for 1 day, it can reduce the number of records.

former_member184720
Active Contributor
0 Kudos

I don't think setting value for "XMBWS.Timeout" would work.

However please have a look at the below note -

1078420 - XI/PI JDBC Adapter: Setting JDBC driver properties for DB

Can you also share the audit log from JDBC receiver channel.

Former Member
0 Kudos

Hi Hareesh,

What is the function of the xnbws timeout parameter?

Regards

former_member184720
Active Contributor
0 Kudos

It is to increase the default timeout parameter but AFAIK - it only works with SOAP receiver adapter.

former_member182412
Active Contributor
0 Kudos

Hi Shaibayan,

Try this channel specific setting if you want increase the time out.

Setting a Channel-Specific Timeout - Advanced Adapter Engine - SAP Library

Regards,

Praveen.

former_member184720
Active Contributor
0 Kudos

It's not applicable for 7.1

Former Member
0 Kudos

Hi Hareesh,

Please see the Audit log.

Thanks,

Shaibayan