慢SQL是比較致命的影響系統穩定性的因素之一。針對此類場景,AHAS應用防護提供了SQL級別的識別與防護,您可以根據監控詳情為慢SQL配置流控降級規則保障系統的穩定性。本文介紹針對慢SQL如何設置應用防護。
背景信息
系統中出現慢SQL可能會導致CPU、負載異常和系統資源耗盡等情況。嚴重的慢SQL發生后可能會拖垮整個數據庫,對線上業務產生阻斷性的風險。線上生產環境出現慢SQL可能原因如下:
- 網絡速度慢、內存不足、I/O吞吐量小、磁盤空間被占滿等硬件原因。
- 沒有索引或者索引失效。
- 系統數據過多。
- 在項目初期沒有對SQL的性能做好考量。
使用AHAS應用防護識別慢SQL并為其配置流控降級規則的具體操作流程如下:
接入AHAS應用防護 | > | 查看監控 | > | 配置慢SQL防護規則 |
步驟一:接入AHAS應用防護
AHAS應用防護通過自動檢測常見的DAO類、JDBC驅動類等自動識別應用中的SQL語句,您可以通過Java Agent或者Java SDK兩種接入方式來實現對SQL的監控和攔截。
將應用接入AHAS請參見接入應用方式。
步驟二:查看監控
將應用接入AHAS應用防護服務后,您可以監控應用和資源API維度的實時數據(細化至秒級),從而評估系統的整體表現,并為流控降級規則的配置提供重要依據。具體監控指標包括QPS、響應時間、流控降級接口數等。
- 登錄AHAS控制臺,在控制臺左上角選擇應用接入的地域。
- 在控制臺左側導航欄中選擇 。
- 在應用列表頁面單擊目標應用的資源卡片。
- 在應用概覽頁面查看應用的限流指標詳情、QPS熱力圖等情況。
- 在左側導航欄單擊接口詳情,在接口詳情頁面查看每條SQL語句的調用及執行情況。
步驟三:配置慢SQL防護規則
根據AHAS自動識別的SQL語句,可以對出現慢SQL的應用配置線程數維度的流控或降級規則,當出現慢SQL調用時限制同一時刻執行的SQL數量,防止過多的慢SQL語句執行把資源耗盡。
流控規則
針對慢SQL防護的流控規則的統計維度有當前接口和關聯接口,具體配置,請參見配置流控規則。
- 當前接口:在該模式下,閾值配置為當前SQL資源,超過設置的值后多余的請求將被拒絕。
- 關聯接口:閾值配置為關聯SQL資源,關聯的資源請求超過設置的值之后,該資源的調用將被攔截。
降級規則
慢SQL防護的還可以使用降級規則,根據SQL執行的RT設置對應的閾值以及時間窗口,超過指定的RT值后在時間窗口內SQL執行將被降級,拋出包裝好的異常。具體操作,請參見配置熔斷規則。
資源被流控降級后會報BlockException
類異常(限流會拋流控異常FlowException,降級會拋出降級異常DegradeException),您可以根據異常信息進行后續業務處理。