Undertow XNIO I / O线程一直吃CPU

时间:2017-06-21 01:42:28

标签: java performance network-programming undertow

我观察到我的应用程序(基于底部)在运行一段时间后不断吃CPU百分比:

enter image description here

最后我发现如果我暂停其中一个XNIO I / O线程,CPU百分比将被释放。

暂停I / O线程后的堆栈帧:

enter image description here

暂停并恢复该线程后的CPU消耗:

enter image description here

知道是什么引发了这个问题吗?

更新

普通I / O线程的暂停位置:

enter image description here

错误I / O线程的暂停位置:

enter image description here

更新2 - 更多调查结果

在逻辑中找到了死循环:

  1. WorkerThread调用selectenter image description here

  2. 线程中断: enter image description here

  3. 所选密钥为null,它会突破循环: enter image description here

  4. 它再次重复无限循环: enter image description here

  5. 然后回到select()来电: enter image description here

0 个答案:

没有答案