SAP integration slowness - Wm 10.15

Product/components used and version/fix level:

IS_10.15_Core_Fix4
SAP_10.1_Fix11

Description

Hello,

We encouter some latencies regarding SAP integrations.

A trigger is activated (topic durable subscriber CONCURRENT with 100 maximum threads).
During its execution, those 3 services from WmSAP package are very slow :

  • pub.sap.client:createTID
  • pub.sap.transport.ALE:OutboundProcess
  • pub.sap.client:confirmTID

It processes less than 10 JMS messages per second.
We want to integrate 10 millions IDoc to SAP.

Actions already tried :
We tried to set the “Store message body” of the SAP connection to “Off” but it changed nothing.
We deleted the whole txStore directory, but the issue still remains.

Thead Dump informations :

"Server Thread Pool" Id=780 in WAITING
	at java.base@11.0.18/jdk.internal.misc.Unsafe.park(Native Method)
	- waiting on <0x28c21d8f> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) owned by thread="Thread-646" Id=1741
	at java.base@11.0.18/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
	at java.base@11.0.18/java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:885)
	at java.base@11.0.18/java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:1009)
	at java.base@11.0.18/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1324)
	at java.base@11.0.18/java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:738)
	at com.wm.adapter.sap.xtn.SAPTransactionManager.cacheGet(SAPTransactionManager.java:164)
	at com.wm.adapter.sap.xtn.SAPTransactionManager.get(SAPTransactionManager.java:1122)
	- locked <0x2c542fbd> (a java.lang.String)
	at com.wm.adapter.sap.xtn.SAPTransactionManager.setTargetSystem(SAPTransactionManager.java:2013)
	at com.wm.adapter.sap.cci.BasicAdapterService.initTransaction(BasicAdapterService.java:218)
	at com.wm.adapter.sap.cci.BasicAdapterService.initTransaction(BasicAdapterService.java:180)
	at com.wm.adapter.sap.cci.ConfirmTID.init(ConfirmTID.java:88)
	at com.wm.adapter.sap.cci.BasicAdapterService.execute(BasicAdapterService.java:117)
	at com.wm.adk.cci.interaction.WmInteraction.execute(WmInteraction.java:76)
	at com.wm.pkg.art.ns.AdapterServiceNode.invokeService(AdapterServiceNode.java:396)
	at com.wm.pkg.art.ns.ARTNSService.baseInvoke(ARTNSService.java:62)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:761)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.continueProcess(AbstractMonitorInvokeProcessor.java:356)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.processRuntime(AbstractMonitorInvokeProcessor.java:151)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.process(AbstractMonitorInvokeProcessor.java:171)
	at wm.bci.internal.BciServiceInvokeNotifier.process(BciServiceInvokeNotifier.java:53)
	at com.wm.ps.serviceMock.ServiceInterceptor.process(ServiceInterceptor.java:360)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:67)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
	at com.wm.app.b2b.server.invoke.ConcurrentRequestLimitProcessor.process(ConcurrentRequestLimitProcessor.java:57)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:631)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:436)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:394)
	at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:260)
	at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:236)
	at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:263)
	at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:662)
	at com.wm.lang.flow.FlowState.step(FlowState.java:527)
	at com.wm.lang.flow.FlowState.invoke(FlowState.java:494)
	at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1164)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:761)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.continueProcess(AbstractMonitorInvokeProcessor.java:356)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.processRuntime(AbstractMonitorInvokeProcessor.java:151)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.process(AbstractMonitorInvokeProcessor.java:171)
	at wm.bci.internal.BciServiceInvokeNotifier.process(BciServiceInvokeNotifier.java:53)
	at com.wm.ps.serviceMock.ServiceInterceptor.process(ServiceInterceptor.java:360)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:67)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
	at com.wm.app.b2b.server.invoke.ConcurrentRequestLimitProcessor.process(ConcurrentRequestLimitProcessor.java:57)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:631)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:436)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:394)
	at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:260)
	at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:236)
	at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:263)
	at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:662)
	at com.wm.lang.flow.FlowState.step(FlowState.java:527)
	at com.wm.lang.flow.FlowState.invoke(FlowState.java:494)
	at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1164)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:761)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.continueProcess(AbstractMonitorInvokeProcessor.java:356)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.processRuntime(AbstractMonitorInvokeProcessor.java:141)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.process(AbstractMonitorInvokeProcessor.java:171)
	at wm.bci.internal.BciServiceInvokeNotifier.process(BciServiceInvokeNotifier.java:53)
	at com.wm.ps.serviceMock.ServiceInterceptor.process(ServiceInterceptor.java:360)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:67)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
	at com.wm.app.b2b.server.invoke.ConcurrentRequestLimitProcessor.process(ConcurrentRequestLimitProcessor.java:57)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:631)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:436)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:352)
	at com.wm.app.b2b.server.jms.consumer.JMSTrigger.invokeService(JMSTrigger.java:1683)
	at com.wm.app.b2b.server.jms.consumer.JMSTrigger.processSingleMessage(JMSTrigger.java:1272)
	at com.wm.app.b2b.server.jms.consumer.JMSTrigger.processMessage(JMSTrigger.java:1238)
	at com.wm.app.b2b.server.jms.consumer.ExecutionTask.process(ExecutionTask.java:620)
	at com.wm.app.b2b.server.jms.consumer.ExecutionTask.processMessages(ExecutionTask.java:233)
	at com.wm.app.b2b.server.jms.consumer.ContinuousExecutionTask.processMessages(ContinuousExecutionTask.java:235)
	at com.wm.app.b2b.server.jms.consumer.ContinuousExecutionTask.run(ContinuousExecutionTask.java:68)
	at com.wm.util.pool.PooledThread.run(PooledThread.java:127)
	- locked <0x1d7e57b0> (a com.wm.app.b2b.server.TMPooledThread)
	at java.base@11.0.18/java.lang.Thread.run(Thread.java:829)
"Thread-646" Id=1741 in BLOCKED
- locked <0x28c21d8f> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
	at com.wm.adapter.sap.xtn.SAPTransactionManager.flushCache(SAPTransactionManager.java:422)
	- waiting on <0x065ed98b> (a com.wm.adapter.sap.xtn.Transaction) owned by thread="Server Thread Pool" Id=10804
	at com.wm.adapter.sap.xtn.SAPTransactionManager.access$600(SAPTransactionManager.java:58)
	at com.wm.adapter.sap.xtn.SAPTransactionManager$1.run(SAPTransactionManager.java:659)
	at java.base@11.0.18/java.lang.Thread.run(Thread.java:829)
"Server Thread Pool" Id=10804 in RUNNABLE
	at java.base@11.0.18/java.io.FileDescriptor.close0(Native Method)
	at java.base@11.0.18/java.io.FileDescriptor.close(FileDescriptor.java:297)
	- locked <0x479b6fa6> (a java.io.FileDescriptor)
	at java.base@11.0.18/java.io.FileOutputStream$1.close(FileOutputStream.java:398)
	at java.base@11.0.18/java.io.FileDescriptor.closeAll(FileDescriptor.java:355)
	- locked <0x479b6fa6> (a java.io.FileDescriptor)
	at java.base@11.0.18/java.io.FileOutputStream.close(FileOutputStream.java:396)
	at com.wm.adapter.sap.xtn.FileTransactionStore.writeXtn(FileTransactionStore.java:839)
	- locked <0x014acb91> (a com.wm.adapter.sap.xtn.FileTransactionStore$TimedLock)
	at com.wm.adapter.sap.xtn.FileTransactionStore.update(FileTransactionStore.java:1243)
	at com.wm.adapter.sap.xtn.SAPTransactionManager.update(SAPTransactionManager.java:1560)
	at com.wm.adapter.sap.xtn.SAPTransactionManager.updateState(SAPTransactionManager.java:2306)
	- locked <0x065ed98b> (a com.wm.adapter.sap.xtn.Transaction)
	at com.wm.adapter.sap.cci.BasicAdapterService.execute(BasicAdapterService.java:158)
	at com.wm.adk.cci.interaction.WmInteraction.execute(WmInteraction.java:76)
	at com.wm.pkg.art.ns.AdapterServiceNode.invokeService(AdapterServiceNode.java:396)
	at com.wm.pkg.art.ns.ARTNSService.baseInvoke(ARTNSService.java:62)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:761)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.continueProcess(AbstractMonitorInvokeProcessor.java:356)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.processRuntime(AbstractMonitorInvokeProcessor.java:151)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.process(AbstractMonitorInvokeProcessor.java:171)
	at wm.bci.internal.BciServiceInvokeNotifier.process(BciServiceInvokeNotifier.java:53)
	at com.wm.ps.serviceMock.ServiceInterceptor.process(ServiceInterceptor.java:360)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:67)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
	at com.wm.app.b2b.server.invoke.ConcurrentRequestLimitProcessor.process(ConcurrentRequestLimitProcessor.java:57)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:631)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:436)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:394)
	at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:260)
	at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:236)
	at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:263)
	at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:662)
	at com.wm.lang.flow.FlowState.step(FlowState.java:527)
	at com.wm.lang.flow.FlowState.invoke(FlowState.java:494)
	at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1164)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:761)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.continueProcess(AbstractMonitorInvokeProcessor.java:356)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.processRuntime(AbstractMonitorInvokeProcessor.java:151)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.process(AbstractMonitorInvokeProcessor.java:171)
	at wm.bci.internal.BciServiceInvokeNotifier.process(BciServiceInvokeNotifier.java:53)
	at com.wm.ps.serviceMock.ServiceInterceptor.process(ServiceInterceptor.java:360)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:67)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
	at com.wm.app.b2b.server.invoke.ConcurrentRequestLimitProcessor.process(ConcurrentRequestLimitProcessor.java:57)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:631)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:436)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:394)
	at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:260)
	at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:236)
	at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:263)
	at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:662)
	at com.wm.lang.flow.FlowState.step(FlowState.java:527)
	at com.wm.lang.flow.FlowState.invoke(FlowState.java:494)
	at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1164)
	at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:761)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.continueProcess(AbstractMonitorInvokeProcessor.java:356)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.processRuntime(AbstractMonitorInvokeProcessor.java:141)
	at fr.gifi.wm.monitor.manager.processor.AbstractMonitorInvokeProcessor.process(AbstractMonitorInvokeProcessor.java:171)
	at wm.bci.internal.BciServiceInvokeNotifier.process(BciServiceInvokeNotifier.java:53)
	at com.wm.ps.serviceMock.ServiceInterceptor.process(ServiceInterceptor.java:360)
	at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
	at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:67)
	at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
	at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
	at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
	at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
	at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
	at com.wm.app.b2b.server.invoke.ConcurrentRequestLimitProcessor.process(ConcurrentRequestLimitProcessor.java:57)
	at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:631)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:436)
	at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:352)
	at com.wm.app.b2b.server.jms.consumer.JMSTrigger.invokeService(JMSTrigger.java:1683)
	at com.wm.app.b2b.server.jms.consumer.JMSTrigger.processSingleMessage(JMSTrigger.java:1272)
	at com.wm.app.b2b.server.jms.consumer.JMSTrigger.processMessage(JMSTrigger.java:1238)
	at com.wm.app.b2b.server.jms.consumer.ExecutionTask.process(ExecutionTask.java:620)
	at com.wm.app.b2b.server.jms.consumer.ExecutionTask.processMessages(ExecutionTask.java:233)
	at com.wm.app.b2b.server.jms.consumer.ContinuousExecutionTask.processMessages(ContinuousExecutionTask.java:235)
	at com.wm.app.b2b.server.jms.consumer.ContinuousExecutionTask.run(ContinuousExecutionTask.java:68)
	at com.wm.util.pool.PooledThread.run(PooledThread.java:127)
	- locked <0x0ca9410e> (a com.wm.app.b2b.server.TMPooledThread)
	at java.base@11.0.18/java.lang.Thread.run(Thread.java:829)

Question related to a production (customer) instance

Where could the issue comes from ?
What should we do to improve integration time ?

1 Like

Hi Alexandre,

which JCo Version are you running on?

Did you try to let the WmSAP Adapter have the TIDs created and confirmed internally instead of explicitly calling createTID and confirmTID services?

Regards,
Holger

Hi Holger,

That is our JCo informations :

Name Value
JCo Version 3.1.8 (2023-07-11)
JCo Middleware JavaRfc
JCo Middleware Version 2.10.2
JCo Native Library Version 753.1216
JCo Native Library Location /opt/softwareag/IntegrationServer/lib/jars/custom/libsapjco3.so
IDoc Library Version 3.1.3 (2023-02-24)

By removing the invokes to createTID, OutboundProcess and confirmTID services, will it manage the TIDs internally ? Or, do we need to setup something else ?

Best regards,
Alexandre

Hi Alexandre,

you should update your JCo libs to latest version 3.1.9 plus 3.1.9 Hotfix 1.
IDocLib 3.1.3 is already the latest version.

Unfortunately, I am not able to check our source code how we handled this in the past as we have retired our project last year for other reasons.

You might want to check the SAP Adapter Installation and Users Guide if there is a chapter regarding this.

Regards,
Holger

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.