首页 > 解决方案 > 用于 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 小时的数据。

标签: elasticsearchkibanaapm

解决方案


推荐阅读