亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

聊聊企業級 Java 應用最重要的4個性能指標

瀏覽:61日期:2022-09-06 08:26:23
 1.商業事務

商業事務是真實用戶體驗的直觀反映:它們抓取了用戶與應用交互時,用戶體驗到的實時性能數據。測量商業事務的性能,需要抓取一件商業事務整體的響應時間及其各個組件的響應時間。這些響應時間再與滿足業務需求的基準進行比較,從而決定應用是否正常。

聊聊企業級 Java 應用最重要的4個性能指標

如果你只打算測量應用的一個方面,本文會推薦你測量商業事務的表現。盡管容量指標(container metrics)能幫助你決定何時調節集群規模,但是商業事務才決定了應用本身的性能。你無需詢問應用服務器線程池(thread pool)的使用情況,而是關心用戶能否迅速完成他們的商業事務,以及這些事務的表現是否正常。

介紹一點背景知識:商業事務通過其入口進行辨別,即用戶與你的業務進行互動的入口。這類互動包括:一個網頁請求,一個網頁服務調用,或消息隊列中的一條消息。當然,你也可以基于一個 URL 參數為同樣的網頁請求定義多個入口,或基于一個服務調用的內容定義多個入口點。關鍵在于:商業交易必須與對你的業務流程相關聯,比如說中國移動的空中繳費業務對應到系統中是多個原子服務,我們就應該將這幾個原子服務通過相應的關聯聚合成一個空中繳費業務來進行監控。

辨別某個商業交易后,它的性能就會在整個應用生態系統中進行測量。每個商業交易的性能會與其基準進行比較,判定其是否正常。譬如,如果某個商業事務的響應時間大于您設定的閾值,我們便判定其運行異常。

總而言之,商業事務最能反映用戶體驗,因此它們也是最重要的抓取維度。

 2.外部服務

外部服務的形式多種多樣:從屬的網頁服務、遺留系統或數據庫等。外部服務是與應用交互的系統。運行在外部服務系統中的代碼常常無法控制,但是我們可以控制這些系統的配置,因此了解他們是否運行正常以及何時出錯也很重要。并且,我們必須有能力區分問題是出自自身應用,還是源于這些外部服務系統。

聊聊企業級 Java 應用最重要的4個性能指標

從商業事務的角度來說,我們可以辨別并測量這些處于自身應用的外部服務。有時,我們需要配置監控方法從而辨別那些包裹了外部服務調用的方法。但是對于常見的協議,諸如 HTTP 和 JDBC,外部服務可以自動檢測。

商業事務讓你對應用的性能有了全局的掌控,幫助你對性能問題進行分類。但是外部服務總能以意想不到的方式極大地影響應用的運行,所以你必須監控它們。

 3.垃圾回收

從 Java 發布最早版本開始,一直都保留的核心特性就是垃圾回收,它真是讓人又愛又恨。垃圾回收使我們不再需要手動管理內存:當使用完一個對象后,我們只需刪除它的引用,然后垃圾回收就會自動釋放它。如果你使用過需要手動管理內存的語言,諸如C或C++,你會滿懷感激。垃圾回收為程序員們減少了分配、釋放內存空間的繁瑣步驟。

聊聊企業級 Java 應用最重要的4個性能指標

此外,因為垃圾回收器會自動釋放沒有引用的內存空間,它減少了傳統的內容泄露情況,即內存被分配后,該內存的引用在內存釋放前就被刪除了。聽起來就像靈丹妙藥,不是么?

盡管垃圾回收達成了無需手動管理內存的目標,也防止了傳統的內存泄露,但是作為代價,垃圾回收過程有時相當笨拙。根據不同的 JVM,垃圾回收策略也會不同。深入探討這些策略超出了本文的主旨。但是,讀者應該明白,了解垃圾回收期的工作原理,以及最佳的配置方案至關重要。

垃圾回收最大的敵人就是傳說中的主要 (major) 或 (full) 垃圾回收。除了 Azul JVM,所有的 JVM 都有這個問題。通常,垃圾回收大致分為兩類:

次級主要

為了釋放存活時間較短的對象,次級垃圾回收發生得相對頻繁。他們在運行時不會封鎖線程,產生的影響較小。

然而,主要垃圾回收,有時也稱為“暫停世界(Stop The World, STW)”垃圾回收,因為他們在運行時會封鎖 JVM 中的所有線程。

聊聊企業級 Java 應用最重要的4個性能指標

當垃圾回收運行時,它會運行一項可達性測試 (reachability test),如圖四所示。它會創建一個由對象組成的根集合 (root set),該集合包含每個運行線程中的直接可見對象。接著,它會探尋根集合中的對象涉及的其他對象,然后探尋這些對象涉及的對象,直到所有對象都被涉及。在這個過程中,它會記錄 (mark) 下現時活動對象的內存地址,然后把不被使用的所有地址都掃除 (sweep)。說得更恰當些,它會把沒有根集合對象引用的內存都釋放。最終,它會壓縮、整理這些內存,這樣新的對象才能獲得內存分配。

聊聊企業級 Java 應用最重要的4個性能指標

根據不同的 JVM ,次級、主要回收的方式都會不同。圖五圖六展示了在Sun JVM內次級、主要回收的操作方式。

在次級回收中,內存主要分配到 Eden 空間直到將其填滿。接著,拷貝收集器(copy collector)會將 Eden 中的活動對象拷貝到兩個幸存者空間(survivor spaces, to space和from space)。遺留在 Eden 中的對象就會被移除。如果幸存者空間被填滿,但還有多余的活動對象,這些對象會被移到 tenured 空間。只有主要回收才能釋放tenured空間的內存。

最終,tenured 空間會被填滿,主要回收將會執行。它不會將幸存者空間放不下的活動對象拷貝到 tenured 空間中。此時,JVM 會封鎖所有線程,運行可達性測試,清除年輕的數據(Eden和兩個幸存者空間),并壓縮 tenured 空間。我們將之稱為主要回收。

聊聊企業級 Java 應用最重要的4個性能指標

你或許會想,堆越大,主要回收運行得越不頻繁。但是當它執行時,所需時間就會比小堆要長。因此,調整好堆的大小和垃圾回收策略對于應用的性能也很重要。

 4.應用布局

最后要探討的性能指標是應用布局。因為云的出現,現在的應用變得更加靈活:應用環境可以根據用戶需求調節大小。因此,對應用的布局進行檢測從而決定實例的多少是否合適是非常重要的。如果你的實例太多,你的云主機成本就會增加。但如果你沒有足夠的實例,商業事務就會受到影響。

在評測過程中,下面兩個指標尤其重要:

商業事務的吞吐量

容器性能

商業事務應該基準化,你應該知道在給定的時間里為了滿足基準所需的實例數量。如果你的商業事務的吞吐量增長突然,你就要增加實例以滿足用戶。

另一個需要監測的是容器性能。具體來說,你想確定是否有應用中的實例負載過大,如果有,你或許想在那個應用中添加實例。從應用的角度查看實例狀態很重要,因為單個實例可能由于垃圾回收之類的因素負載過大,但如果應用中大多數實例都負載過大,則該應用可能已經無法支持它接受的訪問量。

因為應用中的實例可以單個地調節規模,所以分析各個實例的性能進而調整應用布局就至關重要。

本文系 OneAPM 工程師陶炳哲整理。

標簽: Java
相關文章:
主站蜘蛛池模板: 成人午夜精品视频在线观看 | 91精品福利手机国产在线 | 国产特级毛片aaaaaaa高清 | 国产乱淫a∨片免费视频 | 永久国产 | 国产超级碰碰在线公开视频 | 欧美一区二区三区久久久人妖 | 91久久精品国产91久久性色也 | 欧美日韩亚洲m码色帝国 | 日本一二区免费 | 国产精品女上位在线观看 | 黄色网址视频免费 | 国产成人18黄网站免费网站 | 成人 日韩 在线 | 亚洲第一大网站 | 国产一级一片免费播放视频 | 亚洲黄色免费网站 | 国产亚洲欧美久久精品 | 国产粗大猛烈18p | 国产亚洲一区二区三区 | 日本高清高色 | 日韩经典欧美一区二区三区 | 亚洲国产精品一区二区三区 | 国产日韩精品视频 | yy6080韩国日本三理论 | 国产呦系列 欧美呦 日韩呦 | 日本黄色www | 中国黄色网址大全 | 日韩亚洲国产综合久久久 | 91aaa在线观看 | 免费在线观看黄色网址 | 亚洲第一综合 | 国产中出 | 东京一热本色道久久爱 | 国产3页 | 欧美日韩国产在线人 | 日韩精品免费一级视频 | 免费黄色福利 | 91中文字幕在线观看 | 亚洲合集综合久久性色 | 日韩欧美一区二区三区中文精品 |