Share via


監視 Azure AI 搜尋服務中的查詢要求

本文說明如何使用內建計量和資源記錄來測量查詢效能和磁碟區。 它也會說明如何取得應用程式使用者輸入的查詢字串。

Azure 入口網站顯示有關查詢延遲、查詢負載 (QPS) 和節流的基本計量。 對於饋送至這些計量的歷程記錄資料,在入口網站中可存取 30 天。 若要延長保留期,或報告操作資料和查詢字串,您必須新增診斷設定,以指定保存記錄作業和計量的儲存體選項。 我們建議使用 Log Analytics工作區作為記錄作業的目的地。 Kusto 查詢和資料探索會以 Log Analytics 工作區為目標。

最大化資料量值完整性的條件包括:

  • 使用可計費的服務 (在基本或標準層建立的服務)。 免費服務是由多個訂閱者共用,這會在負載移位時引進一定數量的變動性。

  • 盡可能使用單一複本和分割區來建立包含且隔離的環境。 如果您使用多個複本,查詢計量會跨多個節點平均,這可能會降低結果的精確度。 同樣地,多個分割區表示資料已分割,如果索引編製也正在進行中,某些資料分割可能會有不同的資料。 調整查詢效能時,單一節點和資料分割可提供更穩定的環境進行測試。

提示

使用額外的用戶端程式碼和 Application Insights,您也可以擷取點選連結資料,以深入了解吸引應用程式使用者興趣的項目。 如需詳細資訊,請參閱搜尋流量分析

查詢磁碟區 (QPS)

磁碟區會測量每秒搜尋查詢 (QPS),這是一個內建計量,可報告一分鐘視窗內所執行查詢的平均、計數、最小值或最大值。 系統內一分鐘間隔的計量 (TimeGrain = "PT1M") 是固定的。

查詢的執行時間多半是以毫秒為單位,因此只有測量結果以秒計的查詢才會出現在計量中。

彙總類型 描述
平均 查詢執行期間,一分鐘內的平均秒數。
計數 一分鐘間隔內發給記錄的計量數目。
最大值 一分鐘內註冊的每秒搜尋查詢數目上限。
最小值 一分鐘內註冊的每秒搜尋查詢數目下限。
Sum 在一分鐘內執行的所有查詢總和。

例如,在一分鐘內,您可能會有如下的模式:有 1 秒出現極高的負載,這是 SearchQueriesPerSecond 的最大值,接著有 58 秒的平均負載,最後的 1 秒只有一個查詢,而這會是最小值。

另一個範例:如果節點發出 100 個計量,其中每個計量的值是 40,則「Count」為 100,「Sum」為 4000,「Average」為 40,而「Max」為 40。

查詢效能

整個服務的查詢效能是以搜尋延遲 (查詢需要多久的時間才能完成) 和因資源競爭而卸除的節流查詢測量。

搜尋延遲

彙總類型 Latency
平均 平均查詢持續時間 (以毫秒為單位)。
計數 一分鐘間隔內發給記錄的計量數目。
最大值 範例中執行時間最長的查詢。
最小值 範例中執行時間最短的查詢。
總數 範例中所有查詢的總執行時間,是在間隔內執行的 (一分鐘)。

請考慮下列搜尋延遲計量的範例:已取樣 86 個查詢,平均持續時間為 23.26 毫秒。 最小值 0 表示已卸除一些查詢。 執行時間最長的查詢需要 1000 毫秒才能完成。 總執行時間為 2 秒。

Latency aggregations

節流查詢

節流查詢是指已卸除但未處理的查詢。 在大部分情況下,節流是執行服務正常的一部分。 這不一定表示發生錯誤。

當執行中的要求數目超過容量時,就會發生節流。 當複本從輪替或編製索引期間取出時,您可能會看到節流要求增加。 查詢和索引要求都是由同一組資源處理。

服務會根據資源使用量來判斷是否要卸除要求。 系統將計算一段時間內的平均記憶體、CPU 和磁碟 IO 已使用的資源百分比。 如果這個百分比超過閾值,則索引的所有要求都會受到節流,直到要求量降低為止。

視您的用戶端而定,節流要求可以透過下列方式指出:

  • 服務會傳回錯誤 "You are sending too many requests. Please try again later."
  • 服務會傳回 503 錯誤碼,指出服務目前無法使用。
  • 如果您使用入口網站 (例如搜尋總管),則會以無訊息方式卸除查詢,您必須再次選取 [搜尋]

若要確認節流查詢,請使用節流搜尋查詢計量。 如本文所述,您可以在入口網站中探索計量,或建立警示計量。 對於在取樣間隔內卸除的查詢,請使用 Total 來取得未執行的查詢百分比。

彙總類型 節流
平均 在間隔內捨棄的查詢百分比。
計數 一分鐘間隔內發給記錄的計量數目。
最大值 在間隔內捨棄的查詢百分比。
最小值 在間隔內捨棄的查詢百分比。
總數 在間隔內捨棄的查詢百分比。

針對節流的搜尋查詢百分比,最小值、最大值、平均值和總計全是相同的值:一分鐘內的搜尋查詢總數中,已節流的搜尋查詢百分比。

在下列螢幕擷取畫面中,第一個數字是計數 (或傳送至記錄的計量數字)。 顯示在頂端或停留在計量上方的其他彙總包括平均值、最大值和總計。 在此範例中,不會卸除任何要求。

Throttled aggregations

在入口網站中檢視計量

如需快速查看目前的數字,[服務概觀] 頁面上的 [監視] 索引標籤會顯示三個計量 (搜尋延遲每秒搜尋查詢 (每個搜尋單位)節流搜尋查詢百分比) 以小時、天和周為單位的固定間隔,以及變更匯總類型的選項。

若要進行更深入的探索,請從 [監視] 功能表開啟計量總管,讓您可以分層、放大及視覺化資料,以探索趨勢或異常狀況。 完成建立計量圖表教學課程,以深入了解計量瀏覽器。

  1. 在 [監視] 區段底下,選取 [計量] 以開啟計量總管,並將範圍設定為搜尋服務。

  2. 在 [計量] 底下,從下拉式清單中選擇一個,並檢閱偏好型別的可用匯總清單。 該彙總會定義收集的值將如何在每個時間間隔內取樣。

    Metrics explorer for QPS metric

  3. 在右上角設定時間間隔。

  4. 選擇視覺效果。 預設值為折線圖。

  5. 選擇 [新增計量] 並選取不同的彙總,以分層更多彙總。

  6. 放大折線圖上感興趣的區域。 將滑鼠指標放在區域的開頭,選取並按住滑鼠左鍵,拖曳至區域的另一端,再放開按鈕。 圖表將會放大該時間範圍。

傳回使用者輸入的查詢字串

當您啟用資源記錄時,系統會擷取 AzureDiagnostics 資料表中的查詢要求。 作為必要條件,您必須已指定記錄作業的目的地 (Log Analytics 工作區或其他儲存體選項)。

  1. 在 [監視] 區段底下,選取 [記錄] 以在 Log Analytics 中開啟空白查詢視窗。

  2. 執行下列運算式來搜尋 Query.Search 作業,傳回表格式結果集,其中包含作業名稱、查詢字串、查詢索引,以及找到的文件數目。 最後兩個陳述式會排除包含空白或未指定搜尋的查詢字串,而樣本索引會減少結果中的雜訊。

       AzureDiagnostics
    | project OperationName, Query_s, IndexName_s, Documents_d
    | where OperationName == "Query.Search"
    | where Query_s != "?api-version=2023-07-01-preview&search=*"
    | where IndexName_s != "realestate-us-sample-index"
    
  3. 選擇性在 Query_s 上設定資料行篩選,以搜尋特定語法或字串。 例如,您可以將等於?api-version=2023-11-01&search=*&%24filter=HotelName 作為篩選條件。

    Logged query strings

雖然這項技術適用於臨機操作調查,但建置報表可讓您將查詢字串合併並呈現在配置中更方便分析。

識別執行時間長的查詢

新增持續時間資料行可取得所有查詢的數量,而不僅僅是選取為計量的查詢。 透過排序此資料,可以顯示哪些查詢需要最長的時間才能完成。

  1. 在 [監視] 區段底下,選取 [記錄] 以查詢記錄資訊。

  2. 執行下列基本查詢以傳回查詢,並以毫秒為單位依持續時間排序。 執行時間最長的查詢在頂端。

    AzureDiagnostics
    | project OperationName, resultSignature_d, DurationMs, Query_s, Documents_d, IndexName_s
    | where OperationName == "Query.Search"
    | sort by DurationMs
    

    Sort queries by duration

建立計量警示

計量警示會針對傳送通知或觸發您事先定義的矯正措施建立閾值。 您可以建立與查詢執行相關的警示,但您也可以針對資源健康情況、搜尋服務組態變更、技能執行和文件處理 (編製索引) 建立警示。

所有閾值都是使用者定義的,因此您應該了解什麼活動層級應該觸發警示。

針對查詢監視,系統通常會為搜尋延遲和節流查詢建立計量警示。 如果您知道查詢是何時卸除的,您可以尋找可減少負載或增加容量的解決方式。 例如,如果在編製索引期間增加節流查詢,您可以將它延後,直到查詢活動趨緩為止。

如果您超出特定復本分割區設定的限制時,設定查詢磁碟區閾值 (QPS) 的警示也很有用。

  1. 在 [監視] 下,選取 [警示],然後選取 [建立警示規則]

  2. 在 [條件] 底下,選取 [新增]

  3. 設定訊號邏輯。 針對訊號型別,選擇 [計量],並選取訊號。

  4. 選取訊號之後,您可以使用圖表將歷程記錄資料視覺化,以取得如何繼續設定條件的明智決策。

  5. 接下來,向下捲動至 [警示邏輯]。 您可以針對測試目的指定人工性低值,作為概念證明。

  6. 接下來,指定或建立動作群組。 這是符合閾值時要叫用的回應。 這可能是推播通知或自動化回應。

  7. 最後,指定 [警示詳細資料]。 命名並描述警示、指派嚴重性值,並指定是否要在啟用或停用狀態中建立規則。

如果您指定電子郵件通知,您會收到來自「Microsoft Azure」的電子郵件,主旨行為 「Azure 啟動嚴重性:3 <your rule name>」。

下一步

如果您尚未這麼做,請檢閱搜尋服務監視的基本概念,以了解完整的監督功能範圍。