Hi

I was trying to stress-test our application using The Grinder 
(http://grinder.sourceforge.net/). Each thread makes several direct EJB calls 
which result in quite complex business logic triggered, mostly causing DB load.

Everything went smoothly for 10,50,100,250 concurrent requests, but attempt to 
run 500 threads effectively kills JBoss. Grinder's error log says:

anonymous wrote : 
  | 5/21/06 10:58:03 AM (thread 449): Aborting thread due to 
net.grinder.engine.process.JythonScriptExecutionException: Jython error 
encountered creating per-threa
  | d test runner object
  | net.grinder.engine.process.JythonScriptExecutionException: Jython error 
encountered creating per-thread test runner object
  |         at 
net.grinder.engine.process.JythonScript$JythonRunnable.(JythonScript.java:130)
  |         at 
net.grinder.engine.process.GrinderThread.run(GrinderThread.java:104)
  |         at java.lang.Thread.run(Thread.java:595)
  | Caused by: com.supportwizard.utils.ejb.SWEJBException: 
(server23_1148234283868) com.supportwizard.utils.ejb.SWEJBException error 
during JRMP connection establi
  | shment; nested exception is:
  |         java.net.SocketException: Connection reset
  |         at 
net.grinder.engine.process.JythonScriptExecutionException.stripPyException(JythonScriptExecutionException.java:58)
  |         at 
net.grinder.engine.process.JythonScriptExecutionException.(JythonScriptExecutionException.java:48)
  |         ... 3 more
  | Caused by: com.supportwizard.utils.ejb.SWEJBException: 
(server23_1148234283868) com.supportwizard.utils.ejb.SWEJBException error 
during JRMP connection establi
  | shment; nested exception is:
  |         java.net.SocketException: Connection reset
  |         at 
com.supportwizard.seance.Seance.constructUserSeance(Seance.java:1808)
  |         at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at 
org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java)
  |         at 
org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java)
  |         at org.python.core.PyObject.__call__(PyObject.java)
  |         at org.python.core.PyObject.invoke(PyObject.java)
  |         at 
org.python.pycode._pyx0.__init__$2(../devlib/grinder/scripts/randomcaseeditapi.py:32)
  |         at 
org.python.pycode._pyx0.call_function(../devlib/grinder/scripts/randomcaseeditapi.py)
  |         at org.python.core.PyTableCode.call(PyTableCode.java)
  |         at org.python.core.PyTableCode.call(PyTableCode.java)
  |         at org.python.core.PyTableCode.call(PyTableCode.java)
  |         at org.python.core.PyFunction.__call__(PyFunction.java)
  |         at org.python.core.PyInstance.__init__(PyInstance.java)
  |         at org.python.core.PyClass.__call__(PyClass.java)
  |         at org.python.core.PyObject.__call__(PyObject.java)
  |         at 
net.grinder.engine.process.JythonScript$JythonRunnable.(JythonScript.java:127)
  |         ... 2 more
  | Caused by: java.net.SocketException: Connection reset
  |         at java.net.SocketInputStream.read(SocketInputStream.java:168)
  |         at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
  |         at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
  |         at java.io.DataInputStream.readByte(DataInputStream.java:241)
  |         at 
sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:215)
  |         at 
sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
  |         at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94)
  |         at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown 
Source)
  |         at 
org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:119)
  |         at 
org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:227)
  |         at 
org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:167)
  |         at 
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
  |         at 
org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:55)
  |         at 
org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:169)
  |         at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:86)
  |         at $Proxy4.findByName(Unknown Source)
  |         at 
com.supportwizard.seance.Seance.constructUserSeance(Seance.java:1801)
  | 

Here Seance:1801 is a finder call on a home interface.

In server.log I can see autodeployer stopping due to JBAS-3107 and then it 
fails to start because of JBAS-2573 (both fixed in 4.0.4, but I'm still on 
4.0.3sp1). No explicit errors show up there prior to
anonymous wrote : 
  | 10:58:04,144 WARN   [otocol.file.FileURLLister] Could not list directory 
'/usr/local/EnterpriseWizard/jboss/server/sw/deploy', reason unknown
  | 
message.

The question is, what can cause such behaviour? I think that it can be native 
threads limit, but I'm not sure. 

System info:
SUSE LINUX 10.0 (X86-64)
Release ID: JBoss [Zion] 4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 
date=200510231054)
Java VM: Java HotSpot(TM) 64-Bit Server VM 1.5.0_06-b05,Sun Microsystems Inc.
2 x Dual Core AMD Opteron(tm) Processor 270
4GB RAM

Thanks

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3945175#3945175

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3945175


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to