项目场景:
项目用到ES 存储日志数据,
问题描述
程序使用RestHighLevelClient客户端,经常出现Request cannot be executed; I/O reactor status: STOPPED ,网上查找到原因大多是因为手动调用close()
原因分析:
查询出现异常前后的日志,发现前一天晚上有出现过OOM,第二天应用与查询ES相关的操作全部异常,怀疑因为OOM导致client 关闭,
为了验证猜测,写了个简单的测试用例,程序出现OOM后,休眠15秒,释放内存,继续调用client查询ES,抛出Request cannot be executed; I/O reactor status: STOPPED
文章来源:https://www.toymoban.com/news/detail-501921.html
List<MyCustomer> list = new ArrayList<>();
new Thread(new Runnable() {
@Override
public void run() {
while(true){
list.add(new MyCustomer());
}
}
}).start();
esTest.authLogTest();
Thread.sleep(15000);
list.clear();
解决方案:
优化导致OOM的代码文章来源地址https://www.toymoban.com/news/detail-501921.html
到了这里,关于关于ES Request cannot be executed; I/O reactor status: STOPPED 异常原因查找的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!