queue capacity 1000エラー

 

エラー内容

kibana3から以下のエラーが発生

Oops! SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[F_NHDrQ4RUGcNlFb620gqg][elasticsearch4][0]: EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction$23@17cd7178]}{[F_NHDrQ4RUGcNlFb620gqg][elasticsearch4][1]: EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction$23@64260bae]}{[F_NHDrQ4RUGcNlFb620gqg][elasticsearch4][2]: EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction$23@1716c9fd]}{[F_NHDrQ4RUGcNlFb620gqg][elasticsearch4][3]: EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction$23@12bef728]}{[F_NHDrQ4RUGcNlFb620gqg][elasticsearch4][4]: EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction$23@7acfb74]}]

 

image

 

解決
/etc/elasticsearch/elasticsearch.yml

threadpool.search.queue_size: 20000
index.refresh_interval: -1

を入れて解消(上記は根本対策でとりあえずElasticSearchを再起動しても直る)

 

原因の探し方

queue capacity 1000

まずはこのエラーを見て原因を探る

queueといってもElasticSearchにはqueueの種類が多いのでqueueの制限中でも1000がlimitであるのを探してみた

curl -XGET "http://localhost:9200/_nodes/thread_pool?pretty=true"

してSearchのqueue_sizeを見るか

curl -XGET "http://localhost:9200/_cat/thread_pool?v&h=id,host,pid,ip,port,search.active,search.queue,search.rejected,search.queueSize,search.keepAlive"

をしてsearch.queueSizeを確認してみる

俺の場合search.queueSizeが1000となっていた

そしてエラーとなった時点で「search.active」の数値が1000に至ってないかチェックするのもいい

 

なんで起きるのか?

 

そもそも重いクエリを投げてCPUが処理するまでqueueに待機していたから

後重いクエリに対して自動にrefreshをかけていたのでさらにqueueが増えた

それでrefresh_intervalをoffにする設定を入れた(index.refresh_interval: -1)

念のためsearch.queueSizeの設定も1000から20000にしておいた

 

queueの定期監視

muninとかで定期的にsearchQueueの値を監視してqueueがどのように閾値まで至ってるか推移をみるのもいいと思う

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です