隨著時代的進步,越來越的新鮮便利的事情,代替原來的傳統事物。在編程行業內也是如此。因此很多人都曾斷言Java將被新一代便利的語言所代替,但是事實上,如今也有很多重要項目,Java仍然扮演著非常重要的角色。那么企業級Java最重要的應用性能有哪些?這里為大家總結了4個性能指標:業事務,外部服務,垃圾回收以及應用布局。下面是詳細介紹。
1.商業事務
商業事務是真實用戶體驗的直觀反映:它們抓取了用戶與應用交互時,用戶體驗到的實時性能數據。測量商業事務的性能,需要抓取一件商業事務整體的響應時間及其各個組件的響應時間。這些響應時間再與滿足業務需求的基準進行比較,從而決定應用是否正常。
如果你只打算測量應用的一個方面,本文會推薦你測量商業事務的表現。盡管容量指標能幫助你決定何時調節集群規模,但是商業事務才決定了應用本身的性能。你無需詢問應用服務器線程池的使用情況,而是關心用戶能否迅速完成他們的商業事務,以及這些事務的表現是否正常。
介紹一點背景知識:商業事務通過其入口進行辨別,即用戶與你的業務進行互動的入口。這類互動包括:一個網頁請求,一個網頁服務調用,或消息隊列中的一條消息。當然,你也可以基于一個URL參數為同樣的網頁請求定義多個入口,或基于一個服務調用的內容定義多個入口點。關鍵在于:商業交易必須與對你的業務流程相關聯,比如說中國移動的空中繳費業務對應到系統中是多個原子服務,我們就應該將這幾個原子服務通過相應的關聯聚合成一個空中繳費業務來進行監控。
辨別某個商業交易后,它的性能就會在整個應用生態系統中進行測量。每個商業交易的性能會與其基準進行比較,判定其是否正常。譬如,如果某個商業事務的響應時間大于您設定的閾值,我們便判定其運行異常。
總而言之,商業事務最能反映用戶體驗,因此它們也是最重要的抓取維度。
2.外部服務
外部服務的形式多種多樣:從屬的網頁服務、遺留系統或數據庫等。外部服務是與應用交互的系統。運行在外部服務系統中的代碼常常無法控制,但是我們可以控制這些系統的配置,因此了解他們是否運行正常以及何時出錯也很重要。并且,我們必須有能力區分問題是出自自身應用,還是源于這些外部服務系統。
從商業事務的角度來說,我們可以辨別并測量這些處于自身應用的外部服務。有時,我們需要配置監控方法從而辨別那些包裹了外部服務調用的方法。但是對于常見的協議,諸如HTTP和JDBC,外部服務可以自動檢測。
商業事務讓你對應用的性能有了全局的掌控,幫助你對性能問題進行分類。但是外部服務總能以意想不到的方式極大地影響應用的運行,所以你必須監控它們。
3.垃圾回收
從Java發布最早版本開始,一直都保留的核心特性就是垃圾回收,它真是讓人又愛又恨。垃圾回收使我們不再需要手動管理內存:當使用完一個對象后,我們只需刪除它的引用,然后垃圾回收就會自動釋放它。如果你使用過需要手動管理內存的語言,諸如C或C++,你會滿懷感激。垃圾回收為程序員們減少了分配、釋放內存空間的繁瑣步驟。
此外,因為垃圾回收器會自動釋放沒有引用的內存空間,它減少了傳統的內容泄露情況,即內存被分配后,該內存的引用在內存釋放前就被刪除了。聽起來就像靈丹妙藥,不是么?
盡管垃圾回收達成了無需手動管理內存的目標,也防止了傳統的內存泄露,但是作為代價,垃圾回收過程有時相當笨拙。根據不同的JVM,垃圾回收策略也會不同。深入探討這些策略超出了本文的主旨。但是,讀者應該明白,了解垃圾回收期的工作原理,以及最佳的配置方案至關重要。
垃圾回收最大的敵人就是傳說中的主要(major)或(full)垃圾回收。除了Azul JVM,所有的JVM都有這個問題。
4.應用布局
最后要探討的性能指標是應用布局。因為云的出現,現在的應用變得更加靈活:應用環境可以根據用戶需求調節大小。因此,對應用的布局進行檢測從而決定實例的多少是否合適是非常重要的。如果你的實例太多,你的云主機成本就會增加。但如果你沒有足夠的實例,商業事務就會受到影響。
在評測過程中,下面兩個指標尤其重要:
商業事務的吞吐量
容器性能
商業事務應該基準化,你應該知道在給定的時間里為了滿足基準所需的實例數量。如果你的商業事務的吞吐量增長突然,你就要增加實例以滿足用戶。
另一個需要監測的是容器性能。具體來說,你想確定是否有應用中的實例負載過大,如果有,你或許想在那個應用中添加實例。從應用的角度查看實例狀態很重要,因為單個實例可能由于垃圾回收之類的因素負載過大,但如果應用中大多數實例都負載過大,則該應用可能已經無法支持它接受的訪問量。
因為應用中的實例可以單個地調節規模,所以分析各個實例的性能進而調整應用布局就至關重要。
企業級Java最重要的應用性能有哪些,通過上述介紹,相信大家已經清楚了吧,想了解更多關于企業級Java的信息,請繼續關注中培偉業。