webMethods

webMethods

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
Expand all | Collapse all

SAP integration slowness - Wm 10.15

  • 1.  SAP integration slowness - Wm 10.15

    Posted Mon June 17, 2024 08:22 AM

    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 ?


    #Integration-Server-and-ESB
    #webMethods


  • 2.  RE: SAP integration slowness - Wm 10.15

    Posted Mon June 17, 2024 08:52 AM

    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


    #Integration-Server-and-ESB
    #webMethods


  • 3.  RE: SAP integration slowness - Wm 10.15

    Posted Mon June 17, 2024 10:32 AM

    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


    #Integration-Server-and-ESB
    #webMethods


  • 4.  RE: SAP integration slowness - Wm 10.15

    Posted Mon June 17, 2024 10:57 AM

    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


    #webMethods
    #Integration-Server-and-ESB