博睿與中國南方航空成功案例詳情展示
挑戰
首先是在系統承受并發壓力增大的情況下,如何保障業務順利開展。業務順利與系統的健壯性不可分離,業務上線前,在測試環節定位性能問題和優化是前提,上線后實時對多種語言、后端系統統一監測并能預警與溯源是保障;引入APM(應用性能管理)系統對保證系統健壯性與提升用戶體驗非常重要。
解決方案
實時監控應用系統狀態,開發運維及管理人員可以第一時間了解系統健康狀態。從大量后端應用服務和數據庫服務中,快速定位耗時最長、調用次數最多的邏輯單元,幫助運維開發人員收斂系統故障點。深度追蹤異常用戶體驗和應用性能,在代碼級別、SQL語句級別、頁面加載邏輯單元級別,提供問題根源定位。系統升級前后數據對比,通過報表呈現,可有效的追蹤不同的性能指標趨勢,從而為建立優化管理制度打下基石。
1
某次系統升級后發現國際查票回程業務經常出現緩慢,通過博睿Server監測,發現主要受以上類、方法的調用耗時較長導致
以其中一次慢業務過程為例,快照分析中可以看到主線程自身處理時間143572ms,且有21次NoSQL調用,平均1.62ms, 其中sun.misc.Unsafe:park自身處理時間142455ms,主要由于該請求多次重復調用Nosql失敗后請求超時,產生死鎖導致。通過修改redis超時參數后修復
2
通過分析移動APP后臺的DB發現個別SQL語句調用時間過長
以上為調用SQL(select a.id from csmbp_nps…)的健康變化趨勢圖,發現該SQL涉及的業務為推送訂閱的航班動態
通過某次快照分析中可以看到MYSQL調用耗時占總耗時的99.2%,經DBA針對此進一步分析后發現該SQL會占用應用數據庫連接,導致應用在運行一段時間后異常緩慢,無法正常對外服務,通過調整SQL后恢復正常
發生最多的錯誤原因為SocketTimeroutException,錯誤占比60.07%
該錯誤主要是移動APP后臺調用外部服務接口時等待超時
3
以其中一次錯誤為例,快照分析中可以看到錯誤詳情java.net.SocketTimeoutException:Read timed out即調用外部服務等待超時。快速定位問題原因為外部系統導致,將該問題傳遞給外部系統管理人員解決
4
票價查詢業務通過博睿Server探針監測,發現其業務過程緩慢主要受以上類、方法的調用耗時較長導致
以其中一次慢業務過程為例,快照分析中可以看到主線程自身處理時間22680ms,其中com.csair.veda.domain.fare.fq.FqMinaClient:queryAsync自身處理時間19431ms,占比85.67%。導致查詢票價結果超時
客戶對APM系統進行分期建設,目前二期項目將繼續由博睿承擔建設,二期將更全面地在后臺多個系統應用上部署博睿server探針,未來還將融合客戶現有的ELK日志系統、運營平臺數據、實現端到端的全業務鏈監控。