[ 
https://issues.apache.org/jira/browse/DIRMINA-678?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12973760#action_12973760
 ] 

Emmanuel Lecharny commented on DIRMINA-678:
-------------------------------------------

It's a selector problem, so the Connector should be hit too, but it's unlikely. 
The real issue is with the IoProcessor, that process the incoming and outgoing 
events.

I can provide a patch for the Connector if needed.

Basically, it's pretty ugly but simple :
- when the selector() returns immediately, with a 0 value, we are hit by the 
selector bug
- we can improve the detection by looping a number of times before considering 
it's really the case, just to be sure
- then, what we do is that we create a new selector, and register all the 
selectionKeys on this new selector
- then we ditch the old selector and go back to the initial processing

The removed part can be find in 
http://svn.apache.org/viewvc/mina/branches/2.0.3/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java?r1=1001894&r2=1006194&diff_format=h

> NioProcessor 100% CPU usage on Linux (epoll selector bug)
> ---------------------------------------------------------
>
>                 Key: DIRMINA-678
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-678
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.0-M4
>         Environment: CentOS 5.x, 32/64-bit, 32/64-bit Sun JDK 1.6.0_12, also 
> _11/_10/_09 and Sun JDK 1.7.0 b50, Kernel 2.6.18-92.1.22.el5 and also older 
> versions,
>            Reporter: Serge Baranov
>             Fix For: 2.0.3
>
>         Attachments: snap973.png, snap974.png
>
>
> It's the same bug as described at http://jira.codehaus.org/browse/JETTY-937 , 
> but affecting MINA in the very similar way.
> NioProcessor threads start to eat 100% resources per CPU. After 10-30 minutes 
> of running depending on the load (sometimes after several hours) one of the 
> NioProcessor starts to consume all the available CPU resources probably 
> spinning in the epoll select loop. Later, more threads can be affected by the 
> same issue, thus 100% loading all the available CPU cores.
> Sample trace:
> NioProcessor-10 [RUNNABLE] CPU time: 5:15
> sun.nio.ch.EPollArrayWrapper.epollWait(long, int, long, int)
> sun.nio.ch.EPollArrayWrapper.poll(long)
> sun.nio.ch.EPollSelectorImpl.doSelect(long)
> sun.nio.ch.SelectorImpl.lockAndDoSelect(long)
> sun.nio.ch.SelectorImpl.select(long)
> org.apache.mina.transport.socket.nio.NioProcessor.select(long)
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run()
> org.apache.mina.util.NamePreservingRunnable.run()
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)
> java.util.concurrent.ThreadPoolExecutor$Worker.run()
> java.lang.Thread.run()
> It seems to affect any NIO based Java server applications running in the 
> specified environment.
> Some projects provide workarounds for similar JDK bugs, probably MINA can 
> also think about a workaround.
> As far as I know, there are at least 3 users who experience this issue with 
> Jetty and all of them are running CentOS (some distribution default setting 
> is a trigger?). As for MINA, I'm not aware of similar reports yet.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to