Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Elasticsearch正在运行的线程太多_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Cpu_Cpu Usage - Fatal编程技术网 elasticsearch,cpu,cpu-usage,Java,elasticsearch,Cpu,Cpu Usage" /> elasticsearch,cpu,cpu-usage,Java,elasticsearch,Cpu,Cpu Usage" />

Java Elasticsearch正在运行的线程太多

Java Elasticsearch正在运行的线程太多,java,elasticsearch,cpu,cpu-usage,Java,elasticsearch,Cpu,Cpu Usage,我们的ES集群有一个大问题。我们的一个节点始终使用99%的CPU。由于某些原因,与普通节点相比,它为elasticsearch进程运行的线程大约是正常节点的3倍。我附上了两个节点的2个htop屏幕截图,一个过载,另一个正常。请告知 谢谢大家! 重载节点 正常节点 更新 群集体系结构: 11个节点,2个专用主机,9个数据节点 节点硬件属性 大师: CPU:8倍Intel(R)Xeon(R)CPU E5-1620 v2@3.70GHz 内存:32GB 磁盘:120GB 奴隶: CPU:12倍

我们的ES集群有一个大问题。我们的一个节点始终使用99%的CPU。由于某些原因,与普通节点相比,它为
elasticsearch
进程运行的线程大约是正常节点的3倍。我附上了两个节点的2个
htop
屏幕截图,一个过载,另一个正常。请告知

谢谢大家!

重载节点

正常节点

更新

  • 群集体系结构:

    11个节点,2个专用主机,9个数据节点

  • 节点硬件属性

    大师:

    • CPU:8倍Intel(R)Xeon(R)CPU E5-1620 v2@3.70GHz
    • 内存:32GB
    • 磁盘:120GB
    奴隶:

  • CPU:12倍Intel(R)Xeon(R)CPU E5-1650 v2@3.50GHz
  • 内存:64GB
  • 磁盘:2.7T
  • 集群中的文档:

    约2亿

  • 索引配置:

    每个索引分为10个碎片(5个主碎片,5个副本)

  • 查询:

    搜索RT:
    ~250/s
    ,索引RT:
    ~6K/s

  • 操作系统

    Ubuntu 12.04.4 LTS

  • 爪哇


  • 根据手头的稀疏信息,我有几个可能是问题的猜测:

    • 碎片没有很好的平衡,你有热点。确保对使用最频繁的索引进行切分,使每台机器都能完成自己的工作。另外,查看索引级别“index.routing.allocation.total_shards_per_node”以尝试实现相等的平衡

    • 也许在搜索端,您指定搜索应该始终转到“主”碎片。主指定不是平衡的东西,所以基本上,第一个节点有主碎片,后面出现的其他节点都是辅助节点

      • 找到了答案

        [2014-07-07 13:38:42521][DEBUG][index.search.slowlog.query][n013.my_cluster][my_index][3]take[2s],take[2066],types[my_type],stats[],search_type[query_THEN_FETCH],total_shard[5],source[{“size”:20,“from”:0,“sort”:“{”score”:“{”desc,“字段”:[“描述”、“标记”],“默认的_运算符”:“或”},”,“过滤器”:{“和”:[{“范围”:{“ats”:{“lte”:1404730800}}}},{“术语”:{“辅助”:[1,2,4]}},“_缓存”:false}},”,额外的源代码[]

        问题存在于
        “过滤器”{“和”:…}
        ,对于ES来说,与
        bool
        类型的查询相比,这类查询似乎更重。因此,无论何时,当您想要应用一些
        过滤器时,请使用
        bool
        过滤器(
        必须
        不得
        应该

        参考文献:


        干杯!

        恐怕您的屏幕截图本身没有多大帮助。我要添加以下内容:群集中的节点数、每个节点的内存、cpu和磁盘、群集中的文档数、总体群集和索引配置、映射、查询卷、插入卷、ES诊断的输出,如节点统计、操作系统、,jvm版本。@JohnPetrone我发布了一个包含所需信息的更新。谢谢!谢谢你的回复。我们确实遇到了一个热点问题,即我们有9个数据节点,每个索引有
        10个碎片,因此始终有一个节点可以容纳2个碎片。出于测试目的,我们将次要主节点更改为数据节点e和migrated重新分配了碎片-遗憾的是没有更改。关于搜索请求,我们有默认配置,因此它正在查询副本。尝试将每个索引的“index.routing.allocation.total_shards_per_node”设置为1,这将强制实现10个数据节点和10个碎片(包括副本)的相等平衡每个索引。注意:这只应该用于测试。从长远来看,每个索引有更多的碎片可能会更好,这将给每个节点的总碎片提供一些灵活性。
        
        java version "1.7.0_60"
        Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
        Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)