Hi,
When you see the error throw, is the memory reach the heap max size?
Would you please append your configuration for cxf bc consumer/provider
also?
Freeman
KOS wrote:
Hi
(Please see my setting below)
I tried to find out how many messages ServiceMix can handle. After sending
more than about 1400 requests (in parallel with 100 connections) from an
external soap client to an external Web Service (through the ESB), SM raises
errors, for about every second request (see stacktrace below). If I send the
requests from only one client (one connection), it takes longer (about 2000
- 3000 requests) until SM raises errors.
The strange thing is: It makes no difference if I send 1000 requests, wait a
few seconds, and send another 1000, compared to sending 2000 without break.
It always fails after about 1400 requests. The only thing that helps is
restarting SM. Then, I can send another 1400 messages without fails. It
seems that SM does not "recover" from the high load.
My question:
1. Is ServiceMix (the cxf-bc) designed to raise errors when too many
requests are sent? Can't they be queued (before cxf-consumer, this one seems
to raise the error)?
2. How can I tune it (the cxf-bc, whatever would help)?
3. Raising Java VM memory settings helps, SM can then handle more requests.
But I have still the problem that SM raises a lot of errors when I once put
too much load. It seems "not to recover"... How can I solve this (without
restarting SM)?
4. Even worse, when I keep sending requests, SM throws this error (see
below: error-message and stacktrace for second error). Then, it closes the
ports and the service is not available anymore. I have to delete the data
folder and restart SM.
Thanks
My setting:
- ServiceMix 3.3.1 SNAPSHOT
- A WebService-Bridge (cxf-bc consumer and cxf-bc provider). I send
soap-requests from an external client to an external WebService through the
ESB.
- 2 Intel quad-core @ 2.33 GHz, >> 4 GB RAM
- Linux version 2.6.18
- OpenJDK Server VM build 1.6.0_0-b12
- java -server -Xms128M -Xmx512M (higher settings help, but the problem of
"not recovering" stays)
Stacktrace for exception:
org.apache.servicemix.cxfbc.interceptors.JbiFault: Fault occured
at
org.apache.servicemix.cxfbc.CxfBcConsumer$JbiPostInvokerInterceptor.handleMessage(CxfBcConsumer.java:653)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:278)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:252)
at
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
at org.mortbay.jetty.handler.HandlerList.handle(HandlerList.java:49)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
error-message and stacktrace for second error:
<loc-message>Target component servicemix-cxf-bc for service unit
ontology-change-su is not installed</loc-message>
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:125)
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:111)
at
org.apache.servicemix.jbi.framework.ServiceAssemblyLifeCycle.start(ServiceAssemblyLifeCycle.java:146)
at
org.apache.servicemix.jbi.framework.ServiceAssemblyLifeCycle.restore(ServiceAssemblyLifeCycle.java:330)
at
org.apache.servicemix.jbi.framework.DeploymentService.start(DeploymentService.java:100)
at
org.apache.servicemix.jbi.container.JBIContainer.start(JBIContainer.java:670)
at
org.apache.servicemix.jbi.container.SpringJBIContainer.afterPropertiesSet(SpringJBIContainer.java:115)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at
org.apache.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:161)
at
org.apache.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:51)
at org.apache.servicemix.Main.main(Main.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.codehaus.classworlds.Launcher.launchStandard(Launcher.java:353)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:264)
at
org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)