标签: java performance network-programming undertow
我观察到我的应用程序(基于底部)在运行一段时间后不断吃CPU百分比:
最后我发现如果我暂停其中一个XNIO I / O线程,CPU百分比将被释放。
暂停I / O线程后的堆栈帧:
暂停并恢复该线程后的CPU消耗:
知道是什么引发了这个问题吗?
更新
普通I / O线程的暂停位置:
错误I / O线程的暂停位置:
更新2 - 更多调查结果
在逻辑中找到了死循环:
WorkerThread调用select:
select
线程中断:
所选密钥为null,它会突破循环:
null
它再次重复无限循环:
然后回到select()来电:
select()