I was using OpenJDK 1.6. I have just installed the Oracle JRE (java version "1.6.0_33") on Centos release 6.2. However, I am still experiencing the same problem.
When I tried to put the process to background by doing Ctrl-Z then "bg", it would exit by itself. But if I try to leave it in foreground running untouched, it would hang there forever. ^Z [2]+ Stopped java -jar ApacheJMeter.jar -n -t ../jmx/test.jmx -R 192.168.1.12 bin]# bin]# bg [2]+ java -jar ApacheJMeter.jar -n -t ../jmx/test.jmx -R 192.168.1.12 & bin]# ... end of run [2]+ Done java -jar ApacheJMeter.jar -n -t ../jmx/test.jmx -R 192.168.1.12 bin]# On Mon, Jul 16, 2012 at 1:04 PM, sebb <[email protected]> wrote: > On 16 July 2012 17:54, Shmuel Krakower <[email protected]> wrote: >> Hi, >> It seems like it hangs in a hard-coded 5000 ms sleep command. >> Can you please reproduce and take two thread dumps with 10 seconds between >> them - to see that it really hangs on that sleep command. >> >> If it is - it might be related to OS / JDK that you are using. > > Indeed. > > Try creating a very simple test plan, i.e. just one sampler. > This could even be a Java Test sampler as that does not need a server. > > Check it runs OK locally in non-GUI mode, then check it runs OK in > non-GUI mode with your server host(s). > >> Try using Oralce's JDK/JRE instead of OpenJDK. > > Good idea. > > There have been problems with ensuring that RMI exits cleanly even on > the standard Oracle JDK. > The workround may perhaps not be suitable for OpenJDK. > >> What OS are you using? >> >> Best, >> Shmuel Krakower. >> >> On Mon, Jul 16, 2012 at 6:57 PM, unjc email <[email protected]> wrote: >> >>> Anyone has an idea? >>> >>> >>> On Thu, Jul 12, 2012 at 10:31 AM, unjc email <[email protected]> wrote: >>> > Hi Shmuel, >>> > >>> > Thanks for your reply. I have the same problem even I run the remote >>> > call on the same machine that has Jmeter server running. >>> > >>> > Here is the thread dump of the remote process when it "hangs". It >>> > seems like it's in sleeping mode?! >>> > >>> > [root@bin]# 2012-07-12 14:25:27 >>> > Full thread dump OpenJDK 64-Bit Server VM (20.0-b12 mixed mode): >>> > >>> > "Thread-1" daemon prio=10 tid=0x00007f958c001000 nid=0x951 >>> > sleeping[0x00007f95f87f7000] >>> > java.lang.Thread.State: TIMED_WAITING (sleeping) >>> > at java.lang.Thread.sleep(Native Method) >>> > at org.apache.jmeter.JMeter$ListenToTest.run(JMeter.java:966) >>> > at java.lang.Thread.run(Thread.java:679) >>> > >>> > "DestroyJavaVM" prio=10 tid=0x00007f95fc007000 nid=0x934 waiting on >>> > condition [0x0000000000000000] >>> > java.lang.Thread.State: RUNNABLE >>> > >>> > "RMI TCP Connection(1)-192.168.1.12" daemon prio=10 >>> > tid=0x00007f9594001000 nid=0x94d runnable [0x00007f95f88f8000] >>> > java.lang.Thread.State: RUNNABLE >>> > at java.net.SocketInputStream.socketRead0(Native Method) >>> > at java.net.SocketInputStream.read(SocketInputStream.java:146) >>> > at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) >>> > at java.io.BufferedInputStream.read(BufferedInputStream.java:254) >>> > - locked <0x00000000e21e9028> (a java.io.BufferedInputStream) >>> > at java.io.FilterInputStream.read(FilterInputStream.java:83) >>> > at >>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) >>> > at >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808) >>> > at >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667) >>> > at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >>> > at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >>> > at java.lang.Thread.run(Thread.java:679) >>> > >>> > "RMI Reaper" prio=10 tid=0x00007f95fc257000 nid=0x94b in Object.wait() >>> > [0x00007f95f89f9000] >>> > java.lang.Thread.State: WAITING (on object monitor) >>> > at java.lang.Object.wait(Native Method) >>> > - waiting on <0x00000000e19804a8> (a java.lang.ref.ReferenceQueue$Lock) >>> > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) >>> > - locked <0x00000000e19804a8> (a java.lang.ref.ReferenceQueue$Lock) >>> > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149) >>> > at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:350) >>> > at java.lang.Thread.run(Thread.java:679) >>> > >>> > "RMI TCP Accept-0" daemon prio=10 tid=0x00007f95fc35b000 nid=0x94a >>> > runnable [0x00007f95f8afa000] >>> > java.lang.Thread.State: RUNNABLE >>> > at java.net.PlainSocketImpl.socketAccept(Native Method) >>> > at >>> java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:375) >>> > at java.net.ServerSocket.implAccept(ServerSocket.java:470) >>> > at java.net.ServerSocket.accept(ServerSocket.java:438) >>> > at >>> sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387) >>> > at >>> sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:359) >>> > at java.lang.Thread.run(Thread.java:679) >>> > >>> > "GC Daemon" daemon prio=10 tid=0x00007f95fc1fd000 nid=0x948 in >>> > Object.wait() [0x00007f95f8bfb000] >>> > java.lang.Thread.State: TIMED_WAITING (on object monitor) >>> > at java.lang.Object.wait(Native Method) >>> > - waiting on <0x00000000a4c0fc58> (a sun.misc.GC$LatencyLock) >>> > at sun.misc.GC$Daemon.run(GC.java:117) >>> > - locked <0x00000000a4c0fc58> (a sun.misc.GC$LatencyLock) >>> > >>> > "RMI RenewClean-[192.168.1.12:52010]" daemon prio=10 >>> > tid=0x00007f95fc225000 nid=0x947 in Object.wait() [0x00007f95f8cfc000] >>> > java.lang.Thread.State: TIMED_WAITING (on object monitor) >>> > at java.lang.Object.wait(Native Method) >>> > - waiting on <0x00000000a4c17be0> (a java.lang.ref.ReferenceQueue$Lock) >>> > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) >>> > - locked <0x00000000a4c17be0> (a java.lang.ref.ReferenceQueue$Lock) >>> > at >>> sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:534) >>> > at java.lang.Thread.run(Thread.java:679) >>> > >>> > "RMI Scheduler(0)" daemon prio=10 tid=0x00007f95fc251800 nid=0x946 >>> > waiting on condition [0x00007f95f8dfd000] >>> > java.lang.Thread.State: TIMED_WAITING (parking) >>> > at sun.misc.Unsafe.park(Native Method) >>> > - parking to wait for <0x00000000a4c08078> (a >>> > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) >>> > at >>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) >>> > at >>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2081) >>> > at java.util.concurrent.DelayQueue.take(DelayQueue.java:193) >>> > at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:688) >>> > at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:681) >>> > at >>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043) >>> > at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103) >>> > at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >>> > at java.lang.Thread.run(Thread.java:679) >>> > >>> > "Low Memory Detector" daemon prio=10 tid=0x00007f95fc0a4000 nid=0x943 >>> > runnable [0x0000000000000000] >>> > java.lang.Thread.State: RUNNABLE >>> > >>> > "C2 CompilerThread1" daemon prio=10 tid=0x00007f95fc0a2000 nid=0x942 >>> > waiting on condition [0x0000000000000000] >>> > java.lang.Thread.State: RUNNABLE >>> > >>> > "C2 CompilerThread0" daemon prio=10 tid=0x00007f95fc09f000 nid=0x941 >>> > waiting on condition [0x0000000000000000] >>> > java.lang.Thread.State: RUNNABLE >>> > >>> > "Signal Dispatcher" daemon prio=10 tid=0x00007f95fc09d800 nid=0x940 >>> > waiting on condition [0x0000000000000000] >>> > java.lang.Thread.State: RUNNABLE >>> > >>> > "Finalizer" daemon prio=10 tid=0x00007f95fc07f000 nid=0x93f in >>> > Object.wait() [0x00007f9600a40000] >>> > java.lang.Thread.State: WAITING (on object monitor) >>> > at java.lang.Object.wait(Native Method) >>> > - waiting on <0x00000000a4c0fe98> (a java.lang.ref.ReferenceQueue$Lock) >>> > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) >>> > - locked <0x00000000a4c0fe98> (a java.lang.ref.ReferenceQueue$Lock) >>> > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149) >>> > at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177) >>> > >>> > "Reference Handler" daemon prio=10 tid=0x00007f95fc07d000 nid=0x93e in >>> > Object.wait() [0x00007f9600b41000] >>> > java.lang.Thread.State: WAITING (on object monitor) >>> > at java.lang.Object.wait(Native Method) >>> > - waiting on <0x00000000a4c0fc38> (a java.lang.ref.Reference$Lock) >>> > at java.lang.Object.wait(Object.java:502) >>> > at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133) >>> > - locked <0x00000000a4c0fc38> (a java.lang.ref.Reference$Lock) >>> > >>> > "VM Thread" prio=10 tid=0x00007f95fc076000 nid=0x93d runnable >>> > >>> > "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f95fc011800 >>> > nid=0x935 runnable >>> > >>> > "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f95fc013800 >>> > nid=0x936 runnable >>> > >>> > "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f95fc015800 >>> > nid=0x937 runnable >>> > >>> > "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f95fc017000 >>> > nid=0x938 runnable >>> > >>> > "GC task thread#4 (ParallelGC)" prio=10 tid=0x00007f95fc019000 >>> > nid=0x939 runnable >>> > >>> > "GC task thread#5 (ParallelGC)" prio=10 tid=0x00007f95fc01b000 >>> > nid=0x93a runnable >>> > >>> > "GC task thread#6 (ParallelGC)" prio=10 tid=0x00007f95fc01d000 >>> > nid=0x93b runnable >>> > >>> > "GC task thread#7 (ParallelGC)" prio=10 tid=0x00007f95fc01e800 >>> > nid=0x93c runnable >>> > >>> > "VM Periodic Task Thread" prio=10 tid=0x00007f95fc0af000 nid=0x944 >>> > waiting on condition >>> > >>> > JNI global references: 1144 >>> > >>> > Heap >>> > PSYoungGen total 27264K, used 9910K [0x00000000e1960000, >>> > 0x00000000e37c0000, 0x0000000100000000) >>> > eden space 23424K, 42% used >>> > [0x00000000e1960000,0x00000000e230db80,0x00000000e3040000) >>> > from space 3840K, 0% used >>> > [0x00000000e3040000,0x00000000e3040000,0x00000000e3400000) >>> > to space 3840K, 0% used >>> > [0x00000000e3400000,0x00000000e3400000,0x00000000e37c0000) >>> > PSOldGen total 62336K, used 1176K [0x00000000a4c00000, >>> > 0x00000000a88e0000, 0x00000000e1960000) >>> > object space 62336K, 1% used >>> > [0x00000000a4c00000,0x00000000a4d26390,0x00000000a88e0000) >>> > PSPermGen total 21248K, used 11732K [0x000000009a600000, >>> > 0x000000009bac0000, 0x00000000a4c00000) >>> > object space 21248K, 55% used >>> > [0x000000009a600000,0x000000009b175038,0x000000009bac0000) >>> > >>> > >>> > >>> > Thanks, >>> > Jacky >>> > >>> > On Thu, Jul 12, 2012 at 7:21 AM, Shmuel Krakower <[email protected]> >>> wrote: >>> >> Hi, >>> >> I usually have problems like this when I have firewalls between the >>> master >>> >> and the slave. >>> >> Anyway - I'd suggest you to take a thread dump out of JMeter's JVM, both >>> >> for the master and the slave and post them here / in bugzilla. >>> >> This info will help to understand why this hanging happens. >>> >> >>> >> (google for thread+dump+jvm) >>> >> >>> >> Best Regards, >>> >> Shmuel. >>> >> >>> >> On Wed, Jul 11, 2012 at 7:23 PM, unjc email <[email protected]> >>> wrote: >>> >> >>> >>> Hello there, >>> >>> >>> >>> I encounter a problem with remote testing. I have two jmeter servers >>> >>> running. When I start a remote nongui testing using a simple test >>> >>> plan, the remote process does not exit even though after the tests are >>> >>> completed successfully on both remote servers. The process seems hung >>> >>> there and didn't get terminated. I have tried "-X" option as well, >>> >>> and the problem persists even the remote jmeter servers do exit after >>> >>> the completion of the test. The version of Jmeter I am using is >>> >>> Version 2.6 r1237317. All machines have the same version of Jmeter >>> >>> with java "1.6.0_24". Please advise the proper way to run the remote >>> >>> testing. >>> >>> >>> >>> >>> >>> Console Output: >>> >>> [root@bin]# java -jar ApacheJMeter.jar -n -t test.jmx -R >>> >>> 192.168.1.12,192.168.1.13 >>> >>> Created the tree successfully using test.jmx >>> >>> Configuring remote engine for 192.168.1.12 >>> >>> Using remote object: UnicastRef [liveRef: >>> >>> [endpoint:[192.168.1.12:52010 >>> ](remote),objID:[-310e3d54:13872d7fdb9:-7fff, >>> >>> 4757255373403868018]]] >>> >>> Configuring remote engine for 192.168.1.13 >>> >>> Using remote object: UnicastRef [liveRef: >>> >>> [endpoint:[192.168.1.13:55110 >>> ](remote),objID:[-1174d7:138721a1ddf:-7fff, >>> >>> -6734490503268367282]]] >>> >>> Starting remote engines >>> >>> Starting the test @ Wed Jul 11 16:07:37 GMT-00:00 2012 (1342022857988) >>> >>> Starting the test on host 192.168.1.12 @ Wed Jul 11 16:07:38 GMT-00:00 >>> >>> 2012 (1342022858153) >>> >>> Remote engines have been started >>> >>> Finished the test on host 192.168.1.12 @ Wed Jul 11 16:07:38 GMT-00:00 >>> >>> 2012 (1342022858194) >>> >>> Tidying up remote @ Wed Jul 11 16:07:38 GMT-00:00 2012 (1342022858227) >>> >>> >>> >>> ^C >>> >>> >>> >>> >>> >>> test.jmx: >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> >>> <jmeterTestPlan version="1.2" properties="2.2"> >>> >>> <hashTree> >>> >>> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" >>> >>> testname="Test Plan" enabled="true"> >>> >>> <stringProp name="TestPlan.comments"></stringProp> >>> >>> <boolProp name="TestPlan.functional_mode">false</boolProp> >>> >>> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> >>> >>> <elementProp name="TestPlan.user_defined_variables" >>> >>> elementType="Arguments" guiclass="ArgumentsPanel" >>> >>> testclass="Arguments" testname="User Defined Variables" >>> >>> enabled="true"> >>> >>> <collectionProp name="Arguments.arguments"/> >>> >>> </elementProp> >>> >>> <stringProp name="TestPlan.user_define_classpath"></stringProp> >>> >>> </TestPlan> >>> >>> <hashTree> >>> >>> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" >>> >>> testname="Thread Group" enabled="true"> >>> >>> <stringProp >>> >>> name="ThreadGroup.on_sample_error">continue</stringProp> >>> >>> <elementProp name="ThreadGroup.main_controller" >>> >>> elementType="LoopController" guiclass="LoopControlPanel" >>> >>> testclass="LoopController" testname="Loop Controller" enabled="true"> >>> >>> <boolProp >>> name="LoopController.continue_forever">false</boolProp> >>> >>> <stringProp name="LoopController.loops">1</stringProp> >>> >>> </elementProp> >>> >>> <stringProp name="ThreadGroup.num_threads">1</stringProp> >>> >>> <stringProp name="ThreadGroup.ramp_time">1</stringProp> >>> >>> <longProp >>> name="ThreadGroup.start_time">1342019550000</longProp> >>> >>> <longProp name="ThreadGroup.end_time">1342019550000</longProp> >>> >>> <boolProp name="ThreadGroup.scheduler">false</boolProp> >>> >>> <stringProp name="ThreadGroup.duration"></stringProp> >>> >>> <stringProp name="ThreadGroup.delay"></stringProp> >>> >>> </ThreadGroup> >>> >>> <hashTree> >>> >>> <HTTPSamplerProxy guiclass="HttpTestSampleGui" >>> >>> testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> >>> >>> <elementProp name="HTTPsampler.Arguments" >>> >>> elementType="Arguments" guiclass="HTTPArgumentsPanel" >>> >>> testclass="Arguments" testname="User Defined Variables" >>> >>> enabled="true"> >>> >>> <collectionProp name="Arguments.arguments"/> >>> >>> </elementProp> >>> >>> <stringProp >>> name="HTTPSampler.domain">192.168.1.11</stringProp> >>> >>> <stringProp name="HTTPSampler.port"></stringProp> >>> >>> <stringProp name="HTTPSampler.connect_timeout"></stringProp> >>> >>> <stringProp name="HTTPSampler.response_timeout"></stringProp> >>> >>> <stringProp name="HTTPSampler.protocol">http</stringProp> >>> >>> <stringProp name="HTTPSampler.contentEncoding"></stringProp> >>> >>> <stringProp name="HTTPSampler.path">index.html</stringProp> >>> >>> <stringProp name="HTTPSampler.method">GET</stringProp> >>> >>> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> >>> >>> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> >>> >>> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> >>> >>> <boolProp >>> name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> >>> >>> <boolProp name="HTTPSampler.monitor">false</boolProp> >>> >>> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> >>> >>> </HTTPSamplerProxy> >>> >>> <hashTree/> >>> >>> </hashTree> >>> >>> </hashTree> >>> >>> </hashTree> >>> >>> </jmeterTestPlan> >>> >>> >>> >>> >>> >>> >>> >>> Thanks, >>> >>> Jacky >>> >>> >>> >>> --------------------------------------------------------------------- >>> >>> To unsubscribe, e-mail: [email protected] >>> >>> For additional commands, e-mail: [email protected] >>> >>> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
