我发现 Azure 搜索基本实例的性能不稳定。我们的索引只有 1,544 个文档,大小为 28MB,因此我预计搜索速度会非常快。
Azure Application Insights 报告过去 12 小时内从我们的应用程序对 Azure 搜索进行了 4.7K 次调用,平均响应时间为 2.1 秒,标准差为 35.8 秒(!)。
我个人在手动测试期间发现性能不稳定。一个查询可能会在某个时刻花费 20 秒以上,然后稍晚一点,相同的查询将花费不到 100 毫秒。
查询非常简单。下面是一个查询字符串示例:
api-version=2015-02-28&api-key=已删除&search=&%24count=true&%24top=10&%24skip=0&searchMode=all&scoringProfile=FieldBoost&%24orderby=sortableTitle
我可以采取什么措施来进一步解决此问题?
最佳答案
首先,我假设您的查询分布相当均匀,这意味着根据您的数字,每秒大约只有 1 个查询。这听起来正确吗?如果没有,并且您看到大量查询峰值,则很可能您没有足够的副本(索引副本)来处理查询负载。请注意,单个副本基本服务的目标是处理低个位数的 QPS(尽管这可能会根据查询的复杂性或简单性而有很大差异)。如果超出服务的限制,延迟肯定会成为一个问题。深入研究这个问题的一个好方法是使用 Azure Search Traffic Analytics它可以公开搜索指标,其中包括各种时间范围内每秒查询数等数据以及我们在内部看到的延迟指标。
此外,最重要的是,请尝试尽可能地重用 HTTP 连接,并在可能的情况下利用 HTTP 连接池。顺便说一句,在 .NET 中,您应该重用单个 HttpClient 实例,如果使用我们的 Azure 搜索 SDK,则应重用 SearchIndexClient 实例。
关于azure - 对 Azure 搜索性能不佳进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989488/