5 Replies Latest reply on Jun 22, 2010 6:01 AM by njiang

    How to tune the perfomance of the fuse?

    smalla123

      Hi

       

        I use loadrunner to send 60 web service requests concurrently to the fuse, and the fuse break down.

       

        component : osgi-cxf

       

        who could help me tune the performance ? if no one, i have to give up choosing the product.

        • 1. Re: How to tune the perfomance of the fuse?
          smalla123

          垃圾产品~~~~ 黑~

          • 2. Re: How to tune the perfomance of the fuse?
            gertv

            L.S.,

             

            What happens when the container starts to break down?  Does it stall and stop responding or do you see exceptions in the log or ...?

             

            Are you using CXF OSGi or does your solution include other elements (e.g. the NMR transport)?

             

            Regards,

             

            Gert Vanthienen

            • 3. Re: How to tune the perfomance of the fuse?
              smalla123

              NO, I have only exposed a proxy webservice interface.

               

              for BizFirstImplService#bizFirst has thrown exception, unwinding now

              org.apache.cxf.interceptor.Fault: Could not send Message.

                     at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)

                     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)

                     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:484)

                     at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:146)

                     at org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97)

                     at org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95)

                     at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146)

                     at org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94)

                     at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82)

                     at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)

                     at org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)

                     at org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)

                     at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:93)

                     at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)

                     at org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)

                     at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)

                     at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)

                     at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)

                     at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)

                     at org.apache.camel.processor.Pipeline.process(Pipeline.java:74)

                     at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)

                     at org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)

                     at org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)

                     at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:93)

                     at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)

                     at org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)

                     at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)

                     at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)

                     at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)

                     at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)

                     at org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:66)

                     at org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)

                     at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)

                     at org.apache.camel.component.cxf.CxfConsumer$1.invoke(CxfConsumer.java:91)

                     at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)

                     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)

                     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)

                     at java.util.concurrent.FutureTask.run(FutureTask.java:123)

                     at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)

                     at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)

                     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)

                     at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109)

                     at org.apache.cxf.transport.http_osgi.OsgiDestination.doMessage(OsgiDestination.java:79)

                     at org.apache.cxf.transport.http_osgi.OsgiServletController.invokeDestination(OsgiServletController.java:327)

                     at org.apache.cxf.transport.http_osgi.OsgiServletController.invoke(OsgiServletController.java:151)

                     at org.apache.cxf.transport.http_osgi.OsgiServlet.invoke(OsgiServlet.java:53)

                     at org.apache.cxf.transport.http_osgi.SpringOsgiServlet.invoke(SpringOsgiServlet.java:48)

                     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)

                     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)

                     at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)

                     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)

                     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)

                     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)

                     at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.handle(HttpServiceServletHandler.java:64)

                     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)

                     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)

                     at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.handle(HttpServiceContext.java:111)

                     at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:64)

                     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

                     at org.mortbay.jetty.Server.handle(Server.java:326)

                     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)

                     at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)

                     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)

                     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)

                     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)

                     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)

                     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

              Caused by: java.net.BindException: Address already in use: connect

                     at java.net.PlainSocketImpl.socketConnect(Native Method)

                     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)

                     at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)

                     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)

                     at java.net.Socket.connect(Socket.java:520)

                     at sun.net.NetworkClient.doConnect(NetworkClient.java:152)

                     at sun.net.www.http.HttpClient.openServer(HttpClient.java:388)

                     at sun.net.www.http.HttpClient.openServer(HttpClient.java:523)

                     at sun.net.www.http.HttpClient.(HttpClient.java:231)

                     at sun.net.www.http.HttpClient.New(HttpClient.java:304)

                     at sun.net.www.http.HttpClient.New(HttpClient.java:321)

                     at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:813)

                     at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:765)

                     at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:690)

                     at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:857)

                     at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1954)

                     at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1906)

                     at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42)

                     at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)

                     at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1972)

                     at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)

                     at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:640)

                     at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)

                     ... 66 more

              • 4. Re: How to tune the perfomance of the fuse?
                ffang

                Hi,

                 

                Could you please append a simple testcase from which we can reproduce this problem?

                 

                One suggestion I can come up with now is that

                As cxf-osgi use http-osgi transport, which use pax-web http osgi service using jetty underlying,so we can configure jetty to get more resources, take a look at to get idea how to configure jetty for pax-web http osgi service.

                 

                Anyway, a working testcase should be more helpful.

                 

                http://wiki.ops4j.org/display/paxweb/AdvancedJettyConfiguration

                 

                Freeman

                • 5. Re: How to tune the perfomance of the fuse?
                  njiang

                  Hi

                  From the stack trace, it looks like the Http server can't take the connection anymore.

                  Here is a FAQ that you can take a look.

                   

                  I did a simple test on my camel-cxf producer, if I add the header into the request message, the server will close the connection immediately, and you will not have the TIME_WAIT trouble.

                   

                  from("xxx").setHeader("Connection", "close").to("cxf://xxx");

                   

                  Willem