2015-05-18 32 views
0

运行ES 1.5.2 JAVA 1.8_45 Windows 2008 4个节点的32个核心128GB RAM 5TB SSD(每台机器)。我们什么时候需要大量的Elasticsearch堆?

我的目标是索引约25亿份文件。我高达8.1亿。每文档平均30k。

我现在有ES_HEAP_SIZE =30克

但我一直在经历大量的内存压力和STW暂停。示例:目前,一个节点总是使用90%以上的堆使用率,而其余节点则在30%至40%之间的任何地方滑行。所以看来,1节点不会GC?

集群索引(没有错误)记录和一些滚动搜索只发生2件事情。

尽我所能使用doc值。目前没有现场数据缓存(除了奇迹般小)和过滤器缓存非常小,每节点约100MB。

节点仍在尝试恢复,所以我只是不想完全停止集群并将RAM重置为10GB?

How I connect to the cluster in both bulk and scroll search... 

// Do this once at application startup and re-use the client instance. 
Settings settings = ImmutableSettings 
    .settingsBuilder() 
    .put("cluster.name", "xxxx") 
    .build(); 

    client = new TransportClient(settings) 
     .addTransportAddress(new InetSocketTransportAddress("xxxx", 9300)) 
     .addTransportAddress(new InetSocketTransportAddress("xxxx", 9300)) 
     .addTransportAddress(new InetSocketTransportAddress("xxxx", 9300)) 
     .addTransportAddress(new InetSocketTransportAddress("xxxx", 9300)); 

回答

1

不要将批量请求仅发送给一个节点。搜索请求也是如此。

批量请求保存在接收请求的节点上的内存缓冲区中,显然,向任意一个节点发送任何类型的请求并不是一个好主意。通过使用代理服务器(如果有的话)或使用client node来轮询请求并将请求发送到该节点。客户端节点知道如何执行循环机制。

您也可以查看其他选项(取决于访问群集的客户端)并查看这些客户端是否支持自动轮询/负载平衡请求。

+0

我正在使用TransportClient并使用4个节点的IP进行配置。它会不会是自己的循环?什么是好的堆大小? – user432024

+0

这不是关于堆大小。你有不同行为的节点,这不应该发生。你的一个节点正在做其他人不做的事情。你使用路由吗? –

+0

不是。顺便说一句,我更新了我的主要问题与我如何连接。我也有奇迹和kopf在浏览器中运行,查看不同的统计数据。浏览一个节点,但不是具有内存压力问题的节点。 – user432024

相关问题