Elasticsearch - высокая загрузка ЦП для простого запроса при нагрузочном тестировании - PullRequest
2 голосов
/ 19 марта 2019

У меня есть индекс Elasticsearch, содержащий около 93 миллионов документов (68,8 ГБ) на 3 сегмента.При выполнении нагрузочного тестирования (300 одновременных запросов) с одним определенным запросом загрузка ЦП возрастает до 100%.Запрос довольно прост:

{"query": 
    {"bool": 
        {"must": [
            {"match": {"release_title": "Spider - Singles Collection 1976-86"}}, 
            {"match": {"track_title": "TALKIN BOUT ROCK N ROLL (New Version)"}}
                 ]
        }
    }
}

Однако, если я выполняю запрос одного типа с разными строками, загрузка ЦП нормальная.Например, загрузка процессора нормальна для следующего запроса:

{"query": 
    {"bool": 
        {"must": [
            {"match": {"release_title": "Spark Seeker"}}, 
            {"match": {"track_title": "Live Like A Warrior"}}
                 ]
        }
    }
}

Вот результат работы Hot Threads (я новичок в ES, не знаю, как это интерпретировать):

Hot threads at 2019-03-19T12:21:30.840Z, interval=500ms, busiestThreads=3, ignoreIdleThreads=t
rue:

   81.4% (407.1ms out of 500ms) cpu usage by thread 'elasticsearch[3jOzxpW][search][T#2]'
     5/10 snapshots sharing following 21 elements
       org.apache.lucene.search.DisjunctionDISIApproximation.advance(DisjunctionDISIApproximation
.java:66)
       org.apache.lucene.search.ConjunctionDISI.doNext(ConjunctionDISI.java:202)
       org.apache.lucene.search.ConjunctionDISI.nextDoc(ConjunctionDISI.java:240)
       org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:219)
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)
     5/10 snapshots sharing following 17 elements
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)

   80.9% (404.2ms out of 500ms) cpu usage by thread 'elasticsearch[3jOzxpW][search][T#3]'
     7/10 snapshots sharing following 21 elements
       org.apache.lucene.search.DisjunctionDISIApproximation.advance(DisjunctionDISIApproximation.java:66)
       org.apache.lucene.search.ConjunctionDISI.doNext(ConjunctionDISI.java:200)
       org.apache.lucene.search.ConjunctionDISI.nextDoc(ConjunctionDISI.java:240)
       org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:219)
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)
     2/10 snapshots sharing following 23 elements
       org.apache.lucene.search.DisiPriorityQueue.downHeap(DisiPriorityQueue.java:158)
       org.apache.lucene.search.DisiPriorityQueue.updateTop(DisiPriorityQueue.java:119)
       org.apache.lucene.search.DisjunctionDISIApproximation.advance(DisjunctionDISIApproximation.java:67)
       org.apache.lucene.search.ConjunctionDISI.doNext(ConjunctionDISI.java:202)
       org.apache.lucene.search.ConjunctionDISI.nextDoc(ConjunctionDISI.java:240)
       org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:219)
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)
     unique snapshot
       org.apache.lucene.search.DisjunctionDISIApproximation.advance(DisjunctionDISIApproximation.java:66)
       org.apache.lucene.search.ConjunctionDISI.doNext(ConjunctionDISI.java:202)
       org.apache.lucene.search.ConjunctionDISI.nextDoc(ConjunctionDISI.java:240)
       org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:219)
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)

   78.6% (392.8ms out of 500ms) cpu usage by thread 'elasticsearch[3jOzxpW][search][T#13]'
     4/10 snapshots sharing following 20 elements
       org.apache.lucene.search.ConjunctionDISI.doNext(ConjunctionDISI.java:200)
       org.apache.lucene.search.ConjunctionDISI.nextDoc(ConjunctionDISI.java:240)
       org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:219)
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)
     2/10 snapshots sharing following 21 elements
       org.apache.lucene.search.DisjunctionDISIApproximation.advance(DisjunctionDISIApproximation.java:66)
       org.apache.lucene.search.ConjunctionDISI.doNext(ConjunctionDISI.java:202)
       org.apache.lucene.search.ConjunctionDISI.nextDoc(ConjunctionDISI.java:240)
       org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:219)
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)
     2/10 snapshots sharing following 24 elements
       org.apache.lucene.search.TermQuery.createWeight(TermQuery.java:198)
       org.apache.lucene.search.IndexSearcher.createWeight(IndexSearcher.java:752)
       org.apache.lucene.search.BooleanWeight.<init>(BooleanWeight.java:57)
       org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:226)
       org.apache.lucene.search.IndexSearcher.createWeight(IndexSearcher.java:752)
       org.apache.lucene.search.BooleanWeight.<init>(BooleanWeight.java:57)
       org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:226)
       org.apache.lucene.search.IndexSearcher.createWeight(IndexSearcher.java:752)
       org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:735)
       org.elasticsearch.search.internal.ContextIndexSearcher.createNormalizedWeight(ContextIndexSearcher.java:108)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)
     2/10 snapshots sharing following 17 elements
       org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172)
       org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669)
       org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:379)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:106)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:259)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300)
       org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
       org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       java.lang.Thread.run(Thread.java:748)

Система имеет 14 ядер и 40 ГБ оперативной памяти.Я установил размер кучи JVM на 16 ГБ.Может ли кто-нибудь помочь мне понять, что происходит не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...