У меня есть индекс 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 ГБ.Может ли кто-нибудь помочь мне понять, что происходит не так?