居然是你

es客户端io.netty.buffer.PoolArena$HeapArena内存占用高

Elasticsearch | 作者 wengqiankun | 发布于2017年11月23日 | 阅读数:8888

es客户端,发现内存占用很高。做了一个heap dump,发现很多这个对象io.netty.buffer.PoolArena$HeapArena;
 
有谁对这个比较熟悉的;这个是干什么的?有什么方案追踪问题原因或者释放这些对象的占用么
 
es:5.5.1
jdk:1.8
es_os:Red Hat 4.8.3-9
client_os:docker
heap.png
已邀请:

wengqiankun - es新手

赞同来自:

runc

赞同来自:

这个问题最后解决了吗?博主。

runc

赞同来自:

利用jvistualVm反复测试,发现elasticsearch client的在io.netty.allocator.type=pooled的时候,内存占用很高,且没有被回收,io.netty.allocator.type=unpooled,内存占用相对占用比较低,且可以被垃圾回收,测试代码:
 
for(int idx = 0;idx <= 20;idx ++){
Settings settings = Settings.builder()
.put("client.transport.sniff", false)
.put("client.transport.ignore_cluster_name", true)
.build();
long startTime = System.currentTimeMillis();
TransportClient transportClient = new PreBuiltTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.16.10.98"), 9300));
if (logger.isInfoEnabled()) {
logger.info("New Client({}),duration = {}", Thread.currentThread().getId(), (System.currentTimeMillis() - startTime));
}

System.out.println(String.format("第%d次输入:dump",idx));
Thread.sleep(1000);
}

 非池化设置内存堆栈
2.png


池化设置内存堆栈
1.png

 

zhou853137

赞同来自:

楼主,请问这个问题解决了么

han_001

赞同来自:

请问各位如何解决的?

要回复问题请先登录注册