【发布时间】:2017-03-03 15:36:08
【问题描述】:
我知道这是一个已知和讨论过的问题,但我只想在这里获得尺寸:
我在单个 Ubuntu Sever 16.04 node (12 cores, 256G ram) 上运行 ElasticSearch 2.4。我增加了ulimit to > 130k(并通过_nodes/stats/process 验证)。
我有两个索引,每个索引有 10 个分片(因为很快会有多个节点加入集群)。
现在我正在编写多达 900 个并发 Java TransportClients,这会导致 ElasticSearch 服务器在几秒钟内崩溃,引发“打开的文件过多”异常。
我在这里遗漏了什么吗?单个实例处理 900 次并发写入是否太多?还是 10 个分片对于一个节点来说太多了?
【问题讨论】:
-
这个节点总共有多少个segment文件?您的 900 个并发 Java 客户端与 ES 节点位于同一台机器上?
-
查询段数的查询:
GET /_nodes/stats/indices?filter_path=**.segments.count -
而 'max_file_descriptors' 值确实反映了您在操作系统中设置的内容?
-
远程客户端如何访问这个集群?对每个打开多少个网络连接感兴趣......这些确实计入文件描述符限制。例如,如果来自单个客户端的每个请求都是一个忘记关闭它的新连接,那么您可能会遇到问题。
-
嗯...那一定是打开了网络套接字?...我不明白为什么 ES 本身会为每个客户端访问打开约 1000 个文件描述符。
标签: java elasticsearch