zoukankan      html  css  js  c++  java
  • 线程池队列满导致错误

    百度Elasticsearch-产品描述-介绍-百度云 https://cloud.baidu.com/doc/BES/FAQ.html#.07.DD.6F.A4.B5.A3.C2.EF.11.44.39.11.6C.5D.61.A5

    线程池队列满导致错误

    在这种场景下ES抛出的异常是

    rejected execution of org.elasticsearch.transport.TransportService$4@c8998f4 
    on EsThreadPoolExecutor[bulk, queue capacity = 50, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@553aee29
    [Running, pool size = 4, active threads = 4, queued tasks = 50, completed tasks = 0]]
    复制

    ES内部有很多线程池,比如index,search,bulk是我们能够看到的3个典型的线程池,如果系统的压力特别大,后台线程处理不过来的时候,用户发起的任务会在线程池的队列里堆积,如果达到队列的上限就会抛出对应的异常,遇到这种错误需要做以下两步:

    • 检查系统的CPU和IO的利用情况,如果系统的IO和CPU的利用率比较高,这说明系统遇到资源瓶颈了,已经不能通过优化系统的参数来避免这种错误发生了。
    • 如果资源没有问题,那么检查当先线程池的配置,比如上面这个错误就需要检查bulk的线程池的配置,在sense里执行以下命令:

      GET /_cluster/settings
      复制

      结果如下

      "threadpool": {
           "bulk": {
              "type": "fixed",
              "size": "4",
              "queue_size": "50"
           }
        }
      复制

      这个结果表示处理bulk任务的线程池有4个执行线程,队列数为50. 根据我们的经验看,这个值还是比较小的,所以可以直接用以下操作处理:

      PUT /_cluster/settings
      {
          "persistent": {
              "threadpool.bulk.size": 32,
              "threadpool.bulk.queue_size": 300
          }
      }

    线程池队列满导致错误

    在这种场景下ES抛出的异常是

    rejected execution of org.elasticsearch.transport.TransportService$4@c8998f4 
    on EsThreadPoolExecutor[bulk, queue capacity = 50, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@553aee29
    [Running, pool size = 4, active threads = 4, queued tasks = 50, completed tasks = 0]]
    复制

    ES内部有很多线程池,比如index,search,bulk是我们能够看到的3个典型的线程池,如果系统的压力特别大,后台线程处理不过来的时候,用户发起的任务会在线程池的队列里堆积,如果达到队列的上限就会抛出对应的异常,遇到这种错误需要做以下两步:

    • 检查系统的CPU和IO的利用情况,如果系统的IO和CPU的利用率比较高,这说明系统遇到资源瓶颈了,已经不能通过优化系统的参数来避免这种错误发生了。
    • 如果资源没有问题,那么检查当先线程池的配置,比如上面这个错误就需要检查bulk的线程池的配置,在sense里执行以下命令:

      GET /_cluster/settings
      复制

      结果如下

      "threadpool": {
           "bulk": {
              "type": "fixed",
              "size": "4",
              "queue_size": "50"
           }
        }
      复制

      这个结果表示处理bulk任务的线程池有4个执行线程,队列数为50. 根据我们的经验看,这个值还是比较小的,所以可以直接用以下操作处理:

      PUT /_cluster/settings
      {
          "persistent": {
              "threadpool.bulk.size": 32,
              "threadpool.bulk.queue_size": 300
          }
      }
  • 相关阅读:
    Spread for Windows Forms快速入门(2)设置Spread表单
    Spread for Windows Forms快速入门(3)行列操作
    Html5 Canvas 扫雷 (IE9测试通过)
    Web页面中5种超酷的Hover效果
    文字处理控件功能比较:TX Text Control vs. RichTextBox
    Spread for Windows Forms快速入门(7)单元格的交互操作
    Spread for Windows Forms快速入门(6)定义单元格的外观
    Html5 Rocks 镜像
    如何在ASP.NET中生成HTML5离线Web应用
    Spread for Windows Forms快速入门(5)常用的单元格类型(下)
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9869844.html
Copyright © 2011-2022 走看看