Elasticsearch использует 100% CPU, когда ничего не делает

Когда я бегу top Я постоянно вижу эластичный поиск с использованием около 100% процессора. Я полностью отключил logstash, и вывод проверки "curl localhost:9200/_nodes/hot_threads" показывает только потоки в режиме ожидания:

ubuntu@ip-10-43-108-54:/data$ curl localhost:9200/_nodes/hot_threads ::: {7uyKrAF}{7uyKrAFGS0yMk0XiIrEzUQ}{Bk4GTlkiSqOgNU1cEJVxKw}{10.43.108.54}{10.43.108.54:9300}{ml.machine_memory=16825712640, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} Hot threads at 2018-10-25T18:46:33.827Z, interval=500ms, busiestThreads=3, ignoreIdleThreads=true:

ubuntu@ip-10-43-108-54:/data$ curl localhost:9200/_nodes/hot_threads ::: {7uyKrAF}{7uyKrAFGS0yMk0XiIrEzUQ}{Bk4GTlkiSqOgNU1cEJVxKw}{10.43.108.54}{10.43.108.54:9300}{ml.machine_memory=16825712640, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} Hot threads at 2018-10-25T18:46:35.452Z, interval=500ms, busiestThreads=3, ignoreIdleThreads=true:

0.0% (101.7micros out of 500ms) cpu usage by thread 'elasticsearch[7uyKrAF][[timer]]'
 10/10 snapshots sharing following 2 elements
   java.lang.Thread.sleep(Native Method)
   org.elasticsearch.threadpool.ThreadPool$CachedTimeThread.run(ThreadPool.java:543)

убунту @ ф-10-43-108-54:/ данные $ завиток локальный:9200/_nodes/hot_threads::: {7uyKrAF}{} {7uyKrAFGS0yMk0XiIrEzUQ Bk4GTlkiSqOgNU1cEJVxKw}{10.43.108.54}{} {10.43.108.54:9300 мл.machine_memory=16825712640, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} Горячие темы в 2018-10-25T18:46:38.779Z, интервал =500 мс, busiestThreads=3, ignoreIdleThreads=true:

убунту @ ф-10-43-108-54:/ данные $ завиток локальный:9200/_nodes/hot_threads::: {7uyKrAF}{} {7uyKrAFGS0yMk0XiIrEzUQ Bk4GTlkiSqOgNU1cEJVxKw}{10.43.108.54}{} {10.43.108.54:9300 мл.machine_memory=16825712640, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} Горячие темы в 2018-10-25T18:46:40.579Z, интервал =500 мс, busiestThreads=3, ignoreIdleThreads=true:

 Использование процессора на уровне 0,0% (90,5 микросхем из 500 мс) потоком'asticsearch[7uyKrAF][[timer]]'
 10/10 делятся снимками следующих 2 элементов
   java.lang.Thread.sleep(родной метод)
   org.elasticsearch.threadpool.ThreadPool$CachedTimeThread.run(ThreadPool.java:543)

Использование процессора на 0,0% (33,8 микросхемы из 500 мс) потоком 'ticker-schedule-trigger-engine'
 10/10 делятся снимками следующих 2 элементов
   java.lang.Thread.sleep(родной метод)
   org.elasticsearch.xpack.watcher.trigger.schedule.engine.TickerScheduleTriggerEngine$Ticker.run(TickerScheduleTriggerEngine.java:161) 

Каковы типичные причины этого?

1 ответ

Решение

Потоки, показанные как Горячие, - это те, которые Elastic считает горячими. Для диагностики вашего состояния вы захотите увидеть все потоки в процессе, чтобы увидеть, есть ли активность, которая является неожиданной. Чтобы собрать эту информацию, выполните следующие команды:

ps aux | grep elastic

hogstrom 4675 0,0 3,8 7018056 1284496 s001 S+ 16:43PM 0:17,49

Затем захватите PID и выполните следующую команду, чтобы получить дамп всех потоков в JVM. Используя пример выше,

jcmd 4675 Thread.print

Это даст вам дамп потока всех потоков Java. Там вы можете увидеть, какие потоки находятся в JVM и их состояние.

"asticsearch[cXcMg1Z][http_server_worker][T#2]" #61 демон prio = 5 os_prio = 31 tid = 0x00007fa84fbdd000 nid = 0x14a03 runnable [0x00007000147fa000] java.lang.Thread.State.RueNue.kevent0(собственный метод) в sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:198) в sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:117) в sun.nio.lelectAlector (SelectorImpl.java:86)

Пример потока - Runnable. Пройдя по всем потокам, вы должны найти поток, который работает и укажет на задачу, которая потребляет процессор.

Другие вопросы по тегам