性能監控診斷

用戶響應時間 = 服務器響應時間 + 網絡時間

服務器時間:用戶發送請求、應用服務器收到用戶發送的請求、應用服務器和DB、文件系統交互、應用服務器返回數據、界面顯示

網絡時間:服務供應商差異、網絡延遲、網絡擁塞

除此以外,系統的可靠性、穩定性,也是需要考慮的。系統管理員可能經常會遇到系統不穩定,響應速度慢等問題。

系統完成一次請求或響應任務時,還與硬件設備、系統設計、網絡拓撲圖、內部網絡連接設備如交換機、路由器等接入設備、以及路由的處理策略,網絡線路等多方面有關。任何一個環節出了問題,都是會影響到系統的性能。當系統出問題時,需要從應用程序、操作系統、服務器設備、網絡環節、系統資源等多方面綜合排查,定位分析問題,然後集中解決問題。

系統性能分析思路

針對操作系統而言,不能只關注部署在系統上的應用不可用,訪問慢等問題。這些僅僅是一個表面現象,應該系統地去分析應用程序在什麼樣的負載條件下,系統了運行了多少應用,系統的資源分配是否合理,系統是否超負荷運行,是否優化系統的資源來讓系統和應用程序耦合度更高。

日前常見的服務器組成框架,系統日益複雜的工作負載中,性能受許多因素影響,處理器速度、內存容量、網絡或磁盤i/o控制器的數量以及磁盤的容量和速度顯然是所有工作負荷的重要性能特徵組件。其他主要組件包括應用程序自身的性能特徵、工作負荷的特徵、應用程序間的通訊行爲、磁盤或網絡上的數據訪問模式,當然還包括終端用戶對應用程序的使用模型。對特定工作負荷調優時,常常首先要假定許多物理環境特徵,例如:處理器數量、處理器類型、磁盤數量等保持不變。性能分析的主要目標是:識別出工作負荷中哪些組件是當前提高性能和整體吞吐率的瓶頸,以及當工作負荷已經導致硬件能力飽和是,哪些硬件配置的改進,會提高該工作負荷的吞吐率和性能。

  • 整體系統cpu利用率

在做系統性能分析前,首先要了解系統處理器的情況,如邏輯處理器、處理器型號、主頻率、cache大小、是否支持超線程技術等信息,在知道這些的情況下,才能更好的進行系統的性能分析。

當cpu處於滿負載狀態時,需要結合系統附帶的一些監控分析工具。檢查相關的系統日誌,web服務器應用日誌,db日誌等,結合輔助的一些命令如top、free、uptime、sar等輔助分析是否系統cpu會被完全佔用。

應用程序java,可以通過jvm自帶的命令工具(jstat、jmap、jvisualvm、jconsole)來分析。Mysql,可以通過數據庫監控(spotlight、Monyog、及命令行的工具)來分析,以及考慮是否需要做負載均衡或加強機器性能。

  • 內存利用率

當可用的內存太小,系統進程會被阻塞中,應用也將會變得非常緩慢,有時間會失去響應,嚴重的甚至可能會觸發系統的oom(內存溢出)從而引起應用程序被系統給殺死,更嚴重的情況可能會引起系統重啓。當機器的內存太大的時候,有時候也是一種浪費。這時候要考慮做一些緩存服務器來提升系統性能。

虛擬內存也是在內存裏面考慮的性能指標。在系統設計中,當系統的物理內存不夠用,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到虛擬內存空間中,等到那些程序要運行時,再從虛擬內存中恢復保存的數據到物理內存中。

這樣,系統總是在物理內存不夠時,來進行內存之間的交換。有時可能越過系統性能瓶頸,節省系統升級費用。在做性能分析的時候,要考慮系統有無設置虛擬內存,以及虛擬內存的使用情況。

  • 磁盤i/o的利用率和延遲

系統磁盤數據的讀寫,i/o讀寫的性能直接會影響系統程序的性能。讀寫的性能直接會影響系統程序的性能,磁盤i/o系統是系統中最慢的部分。主要是cpu處理頻率較磁盤的物理操作快幾個數據級。如果拿讀取磁盤和內存的時間作比較就是分鐘級到毫秒的區別。i/o比較頻繁的(讀或寫)時候,如果i/o得不到滿足會導致應用的阻塞。針對i/o的場景模型,要考慮的有i/o的tps、平均i/o數據、平均隊列長度、平均服務時間、平均等待時間、io利用率等指標。

  • 網絡利用率

系統應用之間的交互,尤其是跨機器之間的,都是要基於網絡的,因此網絡帶寬、響應時間、網絡延遲、阻塞等都是影響系統性能的因素。假如應用在不穩定、不安全的網絡下會導致應用程序的超時、丟棄、阻塞、波動率大,這些在系統中是不能接收的。在系統中,要考慮對應的網絡是否可達、防火牆是否開啓、端口的訪問、寬帶是否有被限制、路由的尋址、網絡的延時等問題。

瓶頸閾值分析思維導圖

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章