[JBoss JIRA] Created: (JBESB-1105) ESB Should have a good load generation framework
by James Williams (JIRA)
ESB Should have a good load generation framework
------------------------------------------------
Key: JBESB-1105
URL: http://jira.jboss.com/jira/browse/JBESB-1105
Project: JBoss ESB
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: Examples
Environment: I have created groovy scripts that simulate load and provide some TPS metrics. I used an external Groovy 1.1-Beta as my test for these scripts. Groovy is bootstrapped in the build script, so it's possible to swap it out with the ESB bundled, but I do not know if I'm doing any 1.1 specific stuff.
Reporter: James Williams
Assigned To: James Williams
Priority: Minor
There are 2 groovy scripts. One script, JMSLoadAgent.groovy, simulates load by dropping sample messages into a JMS gateway. There are a slew of properties entries to control the throttling of messages, and the payload file can be specified outside of the groovy script. This script is designed to be a template for other load scripts. For example, a load script that drops files into a directory that has a file system listener.
The 2nd script, LoadReport.groovy, uses the JMX MBean stats at the service level to report TPS. you can specify one or more services as a comma separated list. And, there is a short circuit that will kill the reporter. The short cut is a bit crude, but it works. You specify the fastest ESB listener queue. When that queue depth is at 0, the report stops. The report will print out to the console, and to a properties file configured location.
There are also several ant targets to run either the agent, reporter or both. I also include a sample ESB archive to test the quickstart and the services are hardwired so that one is distinctively faster than the other. These scripts should work for any service, provided the user adds the proper entries to "load.properties".
There is no GUI for this yet, but I started out with a GUI, then realized that primary benefit of the load framework is the stats dumped into a log file or on the console. All other stuff is pretty straightforward with a simple properties file.
The readme.txt probably needs a little beef, but I'm going to go ahead and check this in because I think it's going to be a very valuable contribution for users looking to load test and identify TPS at the service level.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 1 month
[JBoss JIRA] Created: (JBESB-1369) Bad action breaks ESB
by Martin Vecera (JIRA)
Bad action breaks ESB
---------------------
Key: JBESB-1369
URL: http://jira.jboss.com/jira/browse/JBESB-1369
Project: JBoss ESB
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Rosetta
Affects Versions: 4.2.1
Environment: server/oracle/deploy/jbossesb.sar/jbossesb-properties.xml in the 'core' section:
<property name="org.jboss.soa.esb.message.default.uri" value="urn:jboss/esb/message/type/JAVA_SERIALIZED"/>
Reporter: Martin Vecera
In one of my tests I sent several messages (text or object - doesn't matter, they both carried String) to Queue/A. There was one service listening on this queue. I tried to use org.jboss.soa.esb.actions.Notifier with target NotifyQueue. This was impossible because my message carried String and the notifier expected byte[]. This caused an exception (see later) and the ESB started to show another warning (connection pool exhausted). I would expect it to return the thread to the pool after this exception. It is 100% reproducible. Just try simple helloworld quickstart with NotifyQueue and ESB set according to 'Environment' field.
The exception (this is expected behavior):
16:28:42,044 INFO [JBoss4ESBDeployer] create esb service, Performance1.esb
16:28:42,069 INFO [QueueService] Queue[/queue/quickstart_helloworld_Request_esb] started, fullSize=200000, pageSize=2000, downCacheSize=2000
16:28:42,077 INFO [QueueService] Queue[/queue/quickstart_helloworld_Request_gw] started, fullSize=200000, pageSize=2000, downCacheSize=2000
16:28:42,259 ERROR [STDERR] Found log4j.properties: jar:file:/home/mvecera/work/jboss-soa-p.4.2.0.IR6/bin/run.jar!/log4j.properties
16:28:42,261 INFO [MessageCounterAction] jbosstest.beancount: null
16:28:42,261 INFO [MessageCounterAction] jbosstest.iterationcount: null
16:28:42,261 INFO [MessageCounterAction] jbosstest.threadcount: null
16:28:42,261 INFO [MessageCounterAction] jbosstest.nodeploy: null
16:28:42,261 INFO [MessageCounterAction] jbosstest.jndiurl: localhost:1099
16:28:42,261 INFO [MessageCounterAction] jbosstest.jndifactory: org.jnp.interfaces.NamingContextFactory
16:28:42,541 INFO [JDBCDataStore] Generated token 'authToken:6F7CA190-9CFD-11DC-AC8B-AA0F09643FB4' for user: 'jbossesb/JBoss ESB User'
16:28:42,667 INFO [QuartzScheduler] Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
16:28:54,478 ERROR [STDERR] Test was finished by processing 1 messages in 1 ms
16:28:54,483 INFO [STDOUT] ConsoleNotifier 2007/11/27 04:28:54.483<Hello World>
16:28:54,532 ERROR [NotificationList] Can't instantiate target <target class="NotifyQueues">
<queue jndiName="queue/D"/>
</target>
org.jboss.soa.esb.notification.NotificationException: Expected payload type for 'urn:jboss/esb/message/type/JAVA_SERIALIZED' is byte[]. Recieved 'java.lang.String'.
at org.jboss.soa.esb.notification.NotifyJMS.sendNotification(NotifyJMS.java:276)
at org.jboss.soa.esb.notification.NotificationList.notifyAll(NotificationList.java:164)
at org.jboss.soa.esb.actions.Notifier.notifyOK(Notifier.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.soa.esb.listeners.message.ActionProcessorMethodInfo.processSuccess(ActionProcessorMethodInfo.java:154)
at org.jboss.soa.esb.listeners.message.OverriddenActionLifecycleProcessor.processSuccess(OverriddenActionLifecycleProcessor.java:108)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.notifySuccess(ActionProcessingPipeline.java:610)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:384)
at org.jboss.soa.esb.listeners.jca.JcaMessageAwareListener.process(JcaMessageAwareListener.java:156)
at org.jboss.soa.esb.listeners.jca.JcaJMSInflowMessageProcessorAdapter.onMessage(JcaJMSInflowMessageProcessorAdapter.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.soa.esb.listeners.jca.BaseJcaInflow$1.invoke(BaseJcaInflow.java:205)
at org.jboss.soa.esb.listeners.jca.EndpointProxy.delivery(EndpointProxy.java:242)
at org.jboss.soa.esb.listeners.jca.EndpointProxy.invoke(EndpointProxy.java:145)
at $Proxy76.onMessage(Unknown Source)
at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178)
at org.jboss.jms.client.container.ClientConsumer.callOnMessage(ClientConsumer.java:157)
at org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:801)
at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect14.invoke(SessionAspect14.java)
at org.jboss.jms.client.delegate.ClientSessionDelegate$run_N8003352271541955702.invokeNext(ClientSessionDelegate$run_N8003352271541955702.java)
at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
at org.jboss.jms.client.delegate.ClientSessionDelegate$run_N8003352271541955702.invokeNext(ClientSessionDelegate$run_N8003352271541955702.java)
at org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)
at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)
at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:237)
at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
at java.lang.Thread.run(Thread.java:595)
The problem:
16:30:58,740 INFO [STDOUT] ConsoleNotifier 2007/11/27 04:30:58.740<Hello World>
16:30:58,741 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:30:58,766 INFO [STDOUT] ConsoleNotifier 2007/11/27 04:30:58.766<Hello World>
16:30:58,766 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:30:58,770 INFO [STDOUT] ConsoleNotifier 2007/11/27 04:30:58.770<Hello World>
16:30:58,770 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:30:58,807 INFO [STDOUT] ConsoleNotifier 2007/11/27 04:30:58.807<Hello World>
16:30:58,807 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:30:59,741 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:30:59,766 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:30:59,770 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:30:59,808 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:00,741 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:00,767 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:00,770 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:00,808 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:01,741 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:01,767 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:01,770 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:01,808 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:02,741 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
16:31:02,769 INFO [JmsConnectionPool] The connection pool was exhausted. Waiting 1 second before trying again..
Undeploying the service didn't fix the problem.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 1 month