elasticsearch - 用于 APM UI 的 Elastisearch 查询速度很慢
问题描述
我注意到在我们的 Kibana GUI 上单击 APM UI 时查询返回 500 响应的问题。服务器发出请求
GET /api/apm/ui_filters/local_filters/services?uiFilters=%7B%7D&start=2020-07-07T07%3A08%3A42.818Z&end=2020-07-08T07%3A08%3A42.818Z&filterNames=%5B%22host%22%2C%22agentName%22%5D
我已经在调试模式下运行了请求,这样我就可以获得查询并在 Kibana 的 Search Profiler 中运行它。我已经运行了这个>
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"terms": {
"processor.event": [
"transaction",
"error",
"metric"
]
}
},
{
"range": {
"@timestamp": {
"gte": 1594105722818,
"lte": 1594192122818,
"format": "epoch_millis"
}
}
},
{
"range": {
"observer.version_major": {
"gte": 7
}
}
}
]
}
},
"aggs": {
"host": {
"filter": {
"bool": {
"filter": []
}
},
"aggs": {
"by_terms": {
"terms": {
"field": "host.hostname",
"order": {
"_count": "desc"
}
},
"aggs": {
"bucket_count": {
"cardinality": {
"field": "service.name"
}
}
}
}
}
},
"agentName": {
"filter": {
"bool": {
"filter": []
}
},
"aggs": {
"by_terms": {
"terms": {
"field": "agent.name",
"order": {
"_count": "desc"
}
},
"aggs": {
"bucket_count": {
"cardinality": {
"field": "service.name"
}
}
}
}
}
}
}
}
当我运行它时,我再次收到超时,我需要缩短查询的时间间隔,但是当“aggs”被删除时,我发现查询真的很快。主要问题在于 APM 的交易索引,对于 4 小时,我得到 3 秒的响应时间,而没有“aggs”,我对该索引有 50 毫秒的响应时间。主要延迟是“next_doc”和“build_scorer”。
也许有人可以让我知道如何继续并解决这个问题,因为查询无法更改,APM 索引或 ES 节点本身可能存在某些问题。
ELK 集群在 docker 中运行,我们有 5 个节点(6 个 CPU 30GB RAM - 10GB JVM,1TB SSD)和一个协调节点,我们也在其中运行 Kibana 和一个 APM 服务器。所有这些都部署在同一区域的 GCP 中。我测量了网络延迟、资源使用和 I/O 速度,但找不到任何会阻碍集群速度的东西。
如果我将第一页上的时间范围更改为 1 小时,然后选择一项服务并移入其中,APM 将加载 24 小时的数据。
解决方案
推荐阅读
- git - Vscode git快捷方式“ctrl + enter to commit on master”在Linux mint上不起作用
- html - CSS:下拉菜单被容器的溢出属性隐藏
- algorithm - 使用两个堆栈分隔偶数奇数
- wordpress - 如何在woocommerce中设置最小订单重量?
- google-maps - Flutter:如何在谷歌地图上将 mylocation 按钮放置在不同的位置?
- javascript - 如何使完整的按钮处理数据?平均提交
- android-layout - 如何使所有过滤器在轻按颤动时都不会改变颜色
- neo4j - 如何连接 Nest.js 和 NEO4j
- python-3.x - 为什么连接样式时会出现两个窗口?
- javascript - Azure Function / Typescript - 等待函数完成处理每个文档