線程池隊列滿導致錯誤


 

百度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
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM