ARMS Python探針通過monkey-patching方式增加可觀測的監控能力,實現應用效能管理,這不可避免地帶來了一定的應用效能開銷。ARMS團隊採用多項技術對探針進行最佳化,將探針的效能開銷降低,以確保應用的穩定運行。在本篇測試報告中,我們類比了真實的使用情境,測試ARMS Python探針在不同業務流量下帶來的效能開銷,您可以參考本篇分析報告,在接入ARMS Python應用監控前,基於效能影響進行充分的評估。
測試情境
整體架構如下圖所示:
由PTS發起流量壓測,流量轉寄到Python應用上,Python應用為使用FastAPI架構搭建的Web Server,通過Python instrumentor採集Trace並產生Metric,之後將資料發送至ARMS服務端。
測試環境
壓測源由阿里雲效能測試服務PTS提供。
Python應用部署在阿里雲Container ServiceACK叢集中,節點執行個體類型為ecs.c6.2xlarge,節點的作業系統版本為Alibaba Cloud Linux 3.2104 LTS 64位。
Python應用的Pod規格為2核2G,2個副本。
Python探針採用Aliyun Python Agent 1.0.0版本。
測試流程
開啟資料上報,在不安裝ARMS Python探針的情況下,分別使用基於500 / 1000 / 2000 QPS,發起3次壓測,每次的持續時間長度為1小時,每次壓測前都先基於100 QPS壓測流量對Python應用進行3分鐘預熱,壓測結果將作為基準效能指標。
安裝ARMS Python探針,在採樣原則設定為10%固定採樣率的情況下,重複第1步的壓測,對比Python應用在CPU開銷、記憶體開銷、RT上的差異。
關閉資料上報,開啟單個外掛程式,重複1~2步驟。
基準效能指標
對比項 | CPU | 記憶體 | RT |
對比項 | CPU | 記憶體 | RT |
500 QPS | 8% | 2% | 17.28 ms |
1000 QPS | 15% | 2% | 36.3 ms |
2000 QPS | 27.12% | 2% | 44.9 ms |
安裝ARMS Python探針後的效能指標
對比項 | CPU | 記憶體 | RT |
對比項 | CPU | 記憶體 | RT |
500 QPS | 11.9% | 4.8% | 17.31 ms |
1000 QPS | 22.5% | 4.8% | 37.1 ms |
2000 QPS | 36.67% | 4.8% | 46.6 ms |
探針效能開銷
對比項 | CPU | 記憶體 | RT |
500 QPS | +3.9% | +2.8% | +0.03 ms |
1000 QPS | +7.5% | +2.8% | +0.80 ms |
2000 QPS | +9.55% | +2.8% | +1.67 ms |
分析結論
ARMS Python探針額外造成的CPU和記憶體開銷,都在10%以內。
ARMS Python探針對於RT(請求回應時間)的影響非常小。