[ https://issues.apache.org/jira/browse/HTTPCORE-155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12656053#action_12656053 ]
Asankha C. Perera commented on HTTPCORE-155: -------------------------------------------- Hi Marc My expectation from your patch was correct operation on the IBM JDK under load and not performance.. and I think its doing pretty well as a work around. I looked into the internals of the IBM JDK, and it seems like they bundle some of the sun.nio.ch classes.. but not the EPollSelectorProvider etc.. I wonder why IBM left this out - or is it available in the new JDKs, that are targeted for better NIO performance? I have also been trying out a queued approach as suggested by Oleg, but have been having some issues which needs some more time to overcome. For a simple test I use the Synapse sample #150, with the SimpleStockQuoteService (with the System.out.println commented out) and use an updated version of the HttpCore benchmark which I call the JavaBench :) .. to generate load. Typically for the above run I used 20 concurrent users, each iterating 10,000 iterations and ran this test thrice. The first was a warm up run which was ignored, and I just looked at the next two TPS results. I wonder why I didn't see a perf improvement with J9.. did you change the code of the stock quote service by any chance? cheers asankha > Performance issues with IBM JRE 6.0 > ----------------------------------- > > Key: HTTPCORE-155 > URL: https://issues.apache.org/jira/browse/HTTPCORE-155 > Project: HttpComponents HttpCore > Issue Type: Bug > Components: HttpCore NIO > Affects Versions: 4.0-beta1 > Environment: Windows 2003 SP2 - IBM J2RE 1.6.0 build 2.4 - HTTPCore > Beta1 - Dual Core CPU 3.0Ghz - 1Gbps networking > Reporter: Tom McSorley > Fix For: 4.1 > > Attachments: AbstractIOReactor.diff, AbstractIOReactor.java, > IOSessionImpl.diff, IOSessionImpl.java, > javacore.20081203.153723.32300.0001.txt > > > I'm issuing a second HTTP Request on a connection that has very recently > returned a null for the submitRequest() call... this 2nd request is being > issued approximately 500ms after the submitRequest() null is returned... so > the connection has just been established, an HTTP Request/Response-200 cycle > has completed just prior to this 2nd request being issued. I'm seeing > unusually long delays in the requestOutput() call (verified by surrounding > timing prints)... that can range anywhere from a few milliseconds on up to 60 > seconds... It eventually unwinds, and then the submitRequest() is called... > this 2nd request is dispatched and works fine... but, it is delayed > considerably... Is this a known issue and is there a possible work-around? > Here's the JVM related thread information: > The thread being delayed and stuck in the requestOutput() call for a long > time (mostly longer than 5 seconds): > 3XMTHREADINFO "pool-2-thread-5" TID:0x2AEECE00, j9thread_t:0x2A7189A8, > state:B, prio=5 > 3XMTHREADINFO1 (native thread ID:0x1B44, native priority:0x5, > native policy:UNKNOWN) > 4XESTACKTRACE at > sun/nio/ch/SelectionKeyImpl.interestOps(SelectionKeyImpl.java:60) > 4XESTACKTRACE at > org/apache/http/impl/nio/reactor/IOSessionImpl.setEvent(IOSessionImpl.java:113) > 4XESTACKTRACE at > org/apache/http/impl/nio/NHttpConnectionBase.requestOutput(NHttpConnectionBase.java:158) > .... (non important stack information removed) > 4XESTACKTRACE at > java/util/concurrent/ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) > 4XESTACKTRACE at java/lang/Thread.run(Thread.java:735) > Here's the monitor that this thread is blocked and waiting on: > 2LKMONINUSE sys_mon_t:0x2A708AF8 infl_mon_t: 0x2A708B30: > 3LKMONOBJECT sun/nio/ch/uti...@00b09208/00B09214: Flat locked by "I/O > dispatcher 7" (0x2A208E00), entry count 1 > 3LKWAITERQ Waiting to enter: > 3LKWAITER "pool-2-thread-5" (0x2AEECE00) > And here's the thread that currently has this monitor locked: > 3XMTHREADINFO "I/O dispatcher 7" TID:0x2A208E00, j9thread_t:0x2A6EC73C, > state:R, prio=5 > 3XMTHREADINFO1 (native thread ID:0x830, native priority:0x5, > native policy:UNKNOWN) > 4XESTACKTRACE at > sun/nio/ch/WindowsSelectorImpl$SubSelector.poll0(Native Method) > 4XESTACKTRACE at > sun/nio/ch/WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:308(Compiled > Code)) > 4XESTACKTRACE at > sun/nio/ch/WindowsSelectorImpl$SubSelector.access$500(WindowsSelectorImpl.java(Compiled > Code)) > 4XESTACKTRACE at > sun/nio/ch/WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:162(Compiled > Code)) > 4XESTACKTRACE at > sun/nio/ch/SelectorImpl.lockAndDoSelect(SelectorImpl.java:69(Compiled Code)) > 4XESTACKTRACE at > sun/nio/ch/SelectorImpl.select(SelectorImpl.java:80(Compiled Code)) > 4XESTACKTRACE at > org/apache/http/impl/nio/reactor/AbstractIOReactor.execute(AbstractIOReactor.java:121) > 4XESTACKTRACE at > org/apache/http/impl/nio/reactor/BaseIOReactor.execute(BaseIOReactor.java:70) > 4XESTACKTRACE at > org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:318) > 4XESTACKTRACE at java/lang/Thread.run(Thread.java:735) > I should also note that we're attempting to use 1000 client instances on this > single system... each with potentially 2 active connections simultaneously... > there is also virtually no CPU load (i.e. less then 5%) on this system... -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org