1. 程式人生 > >【譯】怎麼精確判斷終端使用者響應時間過長的原因

【譯】怎麼精確判斷終端使用者響應時間過長的原因

譯者:原始文章有點效能測試工具軟文的感覺,畢竟文章來源於某工具官方部落格。高手請略過。
對於我這種新手,此文還是給我帶來一些驚喜,從上到下地,從表象到根源地,定位他們遇到效能問題-響應時間過長-的根本原因,有具體的步驟,思考和判斷依據,這就是一個比較不錯效能測試分析例項。可以更清楚看到效能測試如何分析定位,可以學習其思路。故分享之。

原文連線: http://apmblog.compuware.com/2013/06/04/how-to-accurately-identify-impact-of-system-issues-on-end-user-response-time/

 
以下為正文

我們希望檢測下我們社群網站的負載能力,所以我們開發團隊進行了一個任務,驗證生產環境的系統是否能在現有的硬體基礎上處理10倍於目前的負載。為了將網站在高負載下可能的崩潰影響降到最低,我們決定在週日下午進行第一輪測試。在執行測試之前,我們給運維團隊提了一個醒:他們可能在這次兩小時的期間觀察到明顯的負載變化,從而可能影響到執行在同一環境下的其他應用程式。

在測試過程中,運維團隊和開發團隊一起監控實時效能資料,當達到一定的負載水平後,我們看到終端使用者的響應時間和耗盡資源。在本次測試中非常有趣的是,開發團隊和運維團隊都看著相同的資料,但是卻從不同的角度去審視這些結果。然而,他們都是依賴於最近才公佈的Compuware的PureStack技術 ,這是——整合dynaTrace和PurePath——的第一個解決方案,顯示出在高負載下生產環境的硬體是如何影響到關鍵業務應用程式的效能。

'橫向'事務以及'縱向'層面的熱點區域

上下文為運維團隊和開發團隊的資料之間架起橋樑:這張圖片顯示"橫向"事務以及"縱向"層面的熱點區域(Bridging the Gap between Ops and Apps Data by adding Context: One picture that shows the Hotspots of "Horizontal" Transaction as well as the "Vertical" Stack.)。

在我們的場景中表現不佳的根本原因 - 一個執行著Web和應用程式服務的主伺服器的CPU被耗盡 - 從而導致達不到我們的負載目標。事實證明,這個問題是跟硬體裝置和應用程式都有關係(This turned out to be both an IT provisioning and an application problem)。讓我解釋一下團隊的步驟以及他們是如何得出他們的行動項列表,以便改善目前的系統性能,以便在第二輪測試中得到更好的結果。

第1步:監控和識別硬體健康狀況

運維團隊希望能夠看著他們的伺服器列表,而所有關鍵指標(CPU,記憶體,網路,磁碟等)都能很快地呈現出綠色狀態(Operations Teams like having the ability to look at their list of servers and quickly see that all critical indicators (CPU, Memory, Network, Disk, etc) are green)。但是,當我們的負載測試達到了頂峰時,他們看向伺服器的狀態時,顯示出來卻是,他們有2臺機器正出現了異常:

我們的社群網站核心伺服器出現CPU相關的問題,並影響到另一執行在這臺伺服器上的應用程式。

我們的社群網站核心伺服器出現CPU相關的問題,並影響到另一執行在這臺伺服器上的應用程式。

步驟2:哪些執行中的應用程式被真正影響到了?

單擊受影響的程式 選項卡,它會顯示受影響的機器上所有執行的應用程式,以及目前受影響的應用程式:

增加的負載不僅影響到社群網站,而且也影響到我們支援網站

增加的負載不僅影響到社群網站,而且也影響到我們支援網站

這次負載測試已經讓我們明白:如果我們希望未來的社群網站能夠承擔更高的負載,那我們可能需要移動支援網站到其他的機器,以避免不必要的影響。

當兩個團隊孤立檢查,運維導向的監測是不會有這個的結論(When examined independently, operations-oriented monitoring would not be that telling.)。但是,當它被放到具體的上下文中,並涉及到關聯的資料(終端使用者響應時間,使用者體驗,...),這對開發團隊來說是非常重要的,兩個團隊將獲得更多的靈感和視角。這是一個良好的開端,但仍然還有很多需要了解的。

步驟3:哪些關鍵事務被真正影響到了?

點選社群應用程式的連結,它會顯示實際受硬體狀態影響的事務和頁面,但仍然存在著兩個關鍵的卻又懸而未決的問題:

  • 這些事務,是否是我們成功執行的關鍵?
  • 這些事務和個人使用者受效能問題影響後,有多嚴重的後果?
自動基線告訴我們,社群網站主要頁面的響應時間受到明顯的的效能影響。也包括我們的首頁,這是我們最有價值的一個頁面。

自動基線告訴我們,社群網站主要頁面的響應時間受到明顯的的效能影響。也包括我們的首頁,這是我們最有價值的一個頁面。

步驟4:視覺化受硬體問題影響的事務流

事務流圖表是一個令人滿意的方式,能使得運維團隊和開發團隊達到一個基本的共識,並根據其完整的上下文檢視關鍵的資料。它能顯示涉及到的應用層,正在執行的物理機器和虛擬機器器,以及哪裡是熱點區域。

運維團隊和開發團隊有相同的概要圖表,告訴他們無論是在'橫向'事務和'縱向'層面的熱點區域。

運維團隊和開發團隊有相同的概要圖表,告訴他們無論是在"橫向"事務和"縱向"層面的熱點區域。

我們知道,我們的網頁內容非常"豐富"(影象,JavaScript和CSS),高達80%的事務時間花費在瀏覽器上。看到熱點區域這樣的表現,現在整體頁面載入時間下降到50%,我們馬上就知道更多的事務時間已經轉移到新的熱點區域:伺服器端。好訊息是,資料庫是沒有問題的(只用了1%的響應時間),整個效能熱點區域似乎轉到Web和應用程式伺服器,它們都執行在同一臺機器上 - 即那臺存在CPU問題的機器。

第5步:精確定位存在問題的機器的健康問題

點選主機健康圖表(Host Health Dashboard),它會顯示了那個特定的伺服器出了什麼問題:

運維團隊立即看到了CPU的消耗主要來自於一個Java應用伺服器。網路,磁碟和頁面錯誤在一些某些特定的時間也都存在不尋常的波動。

運維團隊立即看到了CPU的消耗主要來自於一個Java應用伺服器。網路,磁碟和頁面錯誤在一些某些特定的時間也都存在不尋常的波動。

第6步:程序健康圖表顯示應用程式伺服器上響應緩慢

我們可以看到,這臺機器上的兩個主要程序是IIS(Web伺服器)和Tomcat(應用程式伺服器)。再進一步看看,隨著時間的推移,他們具體的表現情況:

我們並不是沒有足夠的工作執行緒。傳輸速率是相當平緩。這就說明,Web伺服器正在等待應用伺服器的響應。

我們並不是沒有足夠的工作執行緒。傳輸速率是相當平緩。這就說明,Web伺服器正在等待應用伺服器的響應。

它表明應用程式伺服器的CPU被耗盡。負載測試工具傳送的持續請求在排隊等待,因為伺服器無法及時處理掉這些請求。實際上已處理的事務數量在下降。

它表明應用程式伺服器的CPU被耗盡。負載測試工具傳送的持續請求在排隊等待,因為伺服器無法及時處理掉這些請求。實際上已處理的事務數量在下降。

第7步:精確定位CPU的大量消耗

現在我們開發團隊非常有興趣搞清楚到底是什麼在消耗著CPU,以及是否我們可以在應用程式程式碼裡面修復,或者是否只是我們需要更多的CPU:

熱點區域顯示應用程式的兩層都消耗CPU比較多。讓我們進一步深入

熱點區域顯示應用程式的兩層都消耗CPU比較多。讓我們進一步深入。

我們有些相當複雜的頁面(包含大量Confluence macros)導致大量的CPU佔用

我們有些相當複雜的頁面(包含大量Confluence macros)導致大量的CPU佔用。

缺少資源和身份驗證問題導致了這些異常

缺少資源和身份驗證問題導致了這些異常。

運維和開發團隊現在可以輕鬆地劃分處理硬體和應用程式問題的優先順序

所以如前所述,上下文是關鍵。但這些資料不是輕而易舉就能獲得的 - 上下文依賴於智慧關聯的能力,使所有相關的資料組成一個連貫的故事。當"橫向"的事務資料(終端使用者響應時間的分析)關聯到"縱向"的硬體層面資訊,這就很容易讓兩個團隊達到一個共識,並規劃影響最小的修復的優先順序。

這次實驗使我們能夠確定以下幾個行動項:

  • 當應用程式對其他程式造成負面影響時,部署我們的關鍵應用程式到其他的機器上。
  • 優化我們的頁面生成方式,以便降低CPU使用率。
  • 為虛擬機器分配更多的CPU,以便能夠處理更多的負載。

相關推薦

怎麼精確判斷終端使用者響應時間原因

譯者:原始文章有點效能測試工具軟文的感覺,畢竟文章來源於某工具官方部落格。高手請略過。 對於我這種新手,此文還是給我帶來一些驚喜,從上到下地,從表象到根源地,定位他們遇到效能問題-響應時間過長-的根本原因,有具體的步驟,思考和判斷依據,這就是一個比較不錯效能測試分析例項。可以更清楚看到效能測試如何分析定位,

LinuxSSH連線遠端主機等待時間的解決辦法

最近在使用SSH連線遠端主機的時候發現在輸入SSH命令之後要等很長很長時間才會出現輸入密碼的提示,而在別人機器上基本都是立即就可以顯示輸入密碼的提示。令我非常不爽。誰叫咱是個急性子呢!所以也不想就這麼等著,索性找找解決辦法。終於,咱的機器也可以秒連遠端主機啦! 解決辦法如下

網站響應時間原因及解決方法

網站打不開 網站程序 cas ron height 出口 javascrip 運算 access 遇到過類似問題,我認為有以下幾個原因: 1、網站服務器故障維修(這種情況只能等段

服務器響應時間

服務器響應時間服務器網站響應時間過長的問題解決方法如下: 1、機器的配置。包括服務器端與客戶機端的硬件配置程度,同樣的網絡環境下,雙核的服務器的運算能力肯定要強一些,毫無疑問的,同樣的網絡環境下,用一臺賽揚的機器和奔四雙核處理器的電腦,打開同樣的網頁,速度,也肯定不一樣。 2、服務器軟件。軟件多少、穩定和軟件

關於.Net mvc 專案在本地vs執行響應時間無法訪問時,解決方法!

  最近可能是剛升級了電腦使用了window10作業系統,總是遇到了一些以前沒有遇到過的事情! 今早來到公司本來準備寫bug的,但是當我開啟vs執行的時候發現今天的電腦響應的時間明顯的要比之前開啟網頁除錯的時間要長的多,到最後不但沒有開啟,而且還提示了一個這樣的問題! 如圖:    這就蛋

Tomcat響應時間,超時報錯的解決辦法。

有時間電腦太卡,會遇到tomcat響應時間過長,超時報錯 解決辦法修改eclipse工作空間下的:start-timeout 配置時間(他的預設配置時間是45 可以修改成更大的值) 1:  修改路徑:(E:\eclipseFile\.metadata\.plugins\or

Java heap space造成tomcat響應時間原因在JVM記憶體分配太小,解決方法

使用Java程式從資料庫中查詢大量的資料時出現異常:java.lang.OutOfMemoryError: Java heap space 在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將丟擲此異常資訊。 JVM堆的設定是指java程式

Epoll 連線無響應響應時間

Epoll有兩種模式,LT模式 與 ET模式。預設情況下是LT模式,由於ET模式在高併發,高流量的情況下,處理效率會高於ET模式,所以也就採用了ET模式。 伺服器一直執行良好,跑幾千機器人也沒有什麼問題。但突然之間發現,機器人在反覆掉線上線的測試後,會出現一種情況:伺服器端

Flink + Kafka 0.11端到端精確一次處理語義的實現

網絡 人員 回調 per 算法 connect commit int 學習 本文是翻譯作品,作者是Piotr Nowojski和Michael Winters。前者是該方案的實現者。 原文地址是https://data-artisans.com/blog/end-to-en

你不知道的 Chrome 除錯工具技巧 第十二天:忍日誌列印!(the ninja logs)

特別宣告 本文是作者 Tomek Sułkowski 釋出在 medium 上的一個系列。據作者透露一共有 24 篇,一直更新到 12 月 24 日 版權歸原作者所有。 作者在Twitter上推薦我們的中文翻譯啦,截圖在最後 譯者在翻譯前已經和作者溝通得到了翻譯整個系列的授權。 為了不影響大家閱讀,授權

itertools

body 註意 rst iterable eap 最短 wait 映射 nes 1、Itertools模塊叠代器的種類 1.1 無限叠代器: 叠代器 參數 結果 示例 count() start, [step] start, start+step, start+

巧用 CSS 變量實現自動前綴

實現 這也 ria var 選擇符 http spa style 自動 轉https://www.h5jun.com/post/autoprefixing-with-css-variables-lea-verou.html 最近,當我在制作 markapp.io 這個小網

SAE:一個大規模網絡的社交分析引擎

圖計算 表達 推斷 strong 的人 int 識別 表現 gen Yang Yang, Jianfei Wang, Yutao Zhang, Wei Chen, Jing Zhang, Honglei Zhuang, Zhilin Yang, Bo Ma, Zhanpen

[轉] 讓人傾倒的 11 個 npm trick

都是 聲明 exports wrap ins log int eat license 【From】 https://segmentfault.com/a/1190000006804410 本文轉載自:眾成翻譯譯者:文藺鏈接:http://www.zcfy.cc/ar

Attacking XML with XML External Entity Injection (XXE)

macintosh file flat block inpu inject 有一種 這樣的 content 原文鏈接:Attacking XML with XML External Entity Injection (XXE) XXE:使用XML外部實體註入攻擊XML

mybatisIF判斷的坑

log 語法 == pan sta 標簽 使用 myba mybatis <if test="type==‘y‘"> and status = 0 </if> 即使type=y 裏面的sql也不會執行,只需改為 <if

C++2.判斷閏年

using -m esp cin man int out serve std // // main.cpp // 2_2 // // Created by T.P on 2018/3/4. // Copyright ? 2018年 T.P. All rights r

gRPC負載均衡

github bsp 服務器配置 維護 外部 服務 size 響應 均衡器 原文地址:https://github.com/grpc/grpc/blob/master/doc/load-balancing.md gRPC負載均衡 範圍 本文檔解釋了gPRC的負載均衡

gRPC的服務配置

false IT load 用戶 com 大於 例如 相關 dev 原文地址:https://github.com/grpc/grpc/blob/master/doc/service_config.md gRPC的服務配置 目標 服務配置是一種允許服務擁有者去發布參數以

Gradle 的依賴關系處理不當,可能導致你編譯異常

是什麽 OS 先來 並發 不同的 str 當我 開發者 顯式 文章 | Ashesh Bharadwaj 翻譯 | 承香墨影 授權 承香墨影 翻譯、編輯並發布 在 Android Studio 中,Gradle 構建過程對於開發者來說,很大程度上是抽象的。作為一個新的