Hello,
I have 3 different SA's running on Servicemix 3.3.2, as shown under; update
profile, change password and echo test. When I am trying to load test all
these three operations at the same time, using JMeter, then I'm faced with
following problems (update profile and change password uses ssl based http
su, where as echo test uses plain http su without ssl).
Issues
1) I am not able to increase concurrent request to more than 180 threads,
all operation's request combined.
2) Most of the time, only Echo Test Operation fails with 20-30% errors. Is
it because of it using plain http and the other two are using https?
3) No matter what change I do to the configuration, the results remain the
same.
Each Operation is described below.
1)Change Password (Synchronous, INOUT Exchange)
HTTPs SU (BC) -> CAMEL SU <-> Bean SU (Message Enricher)
<-> Validation SU
-> HTTP SU (BC)
2) Update Profile (Half Synchronous and half asynchronous)
HTTPs SU (BC) -> CAMEL SU <-> Bean SU (Message Enricher)
(conditional) <-> Validation SU <-> JMS PROVIDER
(InOnly) -> JMS Consumer -> HTTP SU
|
Bean
SU (Response Generator INOUT)
3) Echo Test (Synchronous - INOUT)
HTTP SU (BC) -> CAMEL SU -> JMS PROVIDER -> Queue -> JMS CONSUMER ->
VALIDATION SU -> BEAN SU
Now I'm using JMeter to do the load testing with following parameters.
Concurrent Thread for Each Operation : 33-34
Number of seconds to Ramp up the threads : 1
Loop amount : 1, 5, 10.
The servicemix.properties file is configured to following:
servicemix.corePoolSize = 32
servicemix.maximumPoolSize = 200
servicemix.queueSize = 0
# Configuring servicemix bean Thread and queue pool sizes
servicemix.bean.corePoolSize = 200
servicemix.bean.maximumPoolSize = 200
servicemix.bean.queueSize = 0
# Configuring servicemix camel Thread and queue pool sizes
servicemix.camel.corePoolSize = 200
servicemix.camel.maximumPoolSize = 200
servicemix.camel.queueSize = 0
The component.properties file has a single change in pooled Thread for
Jetty. I've changed it from 255 to 400.
Activemq.xml file has changes done to dispatch policy. I've added the
following to the file.
<amq:destinationPolicy>
<amq:policyMap>
<amq:policyEntries>
<amq:policyEntry queue=">"
optimizedDispatch="true"
lazyDispatch="false"
producerFlowControl="false"
memoryLimit="256 mb"
strictOrderDispatch="true">
<amq:pendingQueuePolicy>
<amq:vmQueueCursor />
</amq:pendingQueuePolicy>
</amq:policyEntry>
</amq:policyEntries>
</amq:policyMap>
</amq:destinationPolicy>
The servicemix file in Bin has the following changes:
JAVA_MIN_MEM=256M from 128M
JAVA_MAX_MEM=1024M from 512M
Now, when I run the load test, I can see some Null pointer Exception in
logs. The log status is Debug, I've yet to change it to INFO or Warning.
Here's the log for null pointer exceptions for Echo Test Operation:
DEBUG - HttpComponent - Retrieved correlation id:
ID:127.0.0.1-12b3961b118-7:1603
ERROR - HttpComponent - Error processing exchange InOut[
id: ID:127.0.0.1-12b3961b118-7:1603
status: Active
role: consumer
service: {urn:in2m:servicemix:echotest}ValidatorService
endpoint: camel127-0-0-1-12b3961b118-23-0
in: <?xml version="1.0" encoding="UTF-8"?><response>
<testEchoService>
<status>SUCCESS</status>
</testEchoService>
</response>
out: <?xml version="1.0" encoding="UTF-8"?><response>
<testEchoService>
<status>SUCCESS</status>
</testEchoService>
</response>
]
java.lang.NullPointerException
at
org.apache.servicemix.http.endpoints.HttpConsumerEndpoint.process(HttpConsumerEndpoint.java:236)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:598)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:632)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:185)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
I need some help to resolve this issue. I'm new to servicemix, therefore, if
this issue is known and I shouldn't have created a new topic for this, then
please point me to that location. And I did look around before posting.
Nothing came very close to what I'm facing.
Thanks in advance,
Arshad
--
View this message in context:
http://servicemix.396122.n5.nabble.com/Servicemix-Load-Testing-Issue-tp2849671p2849671.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.