場景:
今天用jmeter來測試搜索服務的併發性能,1000併發,結果es報錯了
org.elasticsearch.common.util.concurrent.EsRejectedExecutionException: rejected execution of org.elasticsearch.common.util.concurrent.TimedRunnable@69105af3 on QueueResizingEsThreadPoolExecutor[name = gdgt_R4/search, queue capacity = 1000, min queue capacity = 1000, max queue capacity = 1000, frame size = 2000, targeted response rate = 1s, task execution EWMA = 95.6ms, adjustment amount = 50, org.elasticsearch.common.util.concurrent.QueueResizingEsThreadPoolExecutor@39e472bb[Running, pool size = 13, active threads = 13, queued tasks = 4975, completed tasks = 5622440]]
原因:
應該就是併發線程數不夠,導致queued tasks太多
解決方法:
在elasticsearch.yml中配置
結果:
elasticsearch支持每秒1000的併發了
但是,在壓測這5min內es一直在做垃圾回收
並且cpu佔用率也很高
最後測出來的es結果
看起來也不是很好,可能是因爲單機的緣故?如果集羣化,會不會好一些?