5 Replies Latest reply on Mar 30, 2010 5:51 AM by kconner

    ServiceInvoker deliverSync too slow...

    sbutt

      Hi All,

               I'm getting a very slow response from the method "deliverSync" of ServiceInvoker class. When I call the service directly (through JMeter) and not through JbossESB (i.e. not as an esb service) then the response time is very good.

       

      Can someone please suggestion what could be the reason for this? Do i need to tune my JBoss or is there some other esb based configuration that requires changing?

       

      Actually, the slow response problem comes when I concurrently open 10 threads, but calling the service directly via JMeter, everything works fine. it is not the external application the reason for the delay as my message tracng shows that the main bottleneck is created sometimes before the deliverSync method is called and sometimes after calling it.

       

      thnaks.

        • 1. Re: ServiceInvoker deliverSync too slow...
          sbutt

          to be more precise, the delay occurs between calling the "deliverySync" method and reaching the first "action" of the service-pipeline and then after executing the last "action" and returning the response message through the "deliverSync" method.

           

          Has nyone encountered this problem before?

          • 2. Re: ServiceInvoker deliverSync too slow...
            ryanhos

            Which messaging system are you using?  Is your messaging system backed by a database?  Are you passing in a rather large object or large object graph, requiring significant work to serialize and deserialize?  What about your registry?  Is it rather full?  (check the DB for entries which have not been cleaned up).  Does RegistryUtil.getEPRs(category, service) respond in a reasonable time when executed in the same context as the call to deliverSync?  Is deliverSync happening over a network?

             

            Try turning on debug logging.  The whole system will run more slowly, as a consequence, but you'll be able to see the relative times between operations and determine where the wait periods are.

             

            That's how I would attack it, but perhaps one of the project developers has a better idea.

            • 3. Re: ServiceInvoker deliverSync too slow...
              sbutt

              - JMS.

              - No

              - No (simple/small xml)

              - No

               

              i solved the problem as stated here:

              http://community.jboss.org/wiki/JBossESBPerformanceTuning

               

              under

              5. Tuning for JMS listeners

              b) jbossesb.esb/META-INF/jboss-esb.xml

               

              here I changed the maxThread parameter to 10 for ServiceInvoker class and my problem got solved.

               

              Thanks.

              • 4. Re: ServiceInvoker deliverSync too slow...
                h.wolffenbuttel

                hi,

                 

                I have tried your change but it did nothing for performance locally. Just to be sure, could you look at the thread http://community.jboss.org/message/534575#534575 for me? There I have described the changes.

                 

                Thanx,

                 

                Hans

                • 5. Re: ServiceInvoker deliverSync too slow...
                  kconner

                  The maxThreads attribute tells the pipeline how many messages can be processed concurrently by the service pipeline, it is not specific to the ServiceInvoker although any deliverSync call would need to wait on the service to provide the result.  By default this is set to 1, so the service requests will be handled concurrently.

                   

                  If you are using JMS for your service then also try jms-jca-provider rather than jms-provider, as this performs better within a server environment.

                   

                  Kev