溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么

發(fā)布時(shí)間:2022-01-06 21:07:58 來(lái)源:億速云 閱讀:124 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么”,在日常操作中,相信很多人在企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1.商業(yè)事務(wù)

商業(yè)事務(wù)是真實(shí)用戶(hù)體驗(yàn)的直觀反映:它們抓取了用戶(hù)與應(yīng)用交互時(shí),用戶(hù)體驗(yàn)到的實(shí)時(shí)性能數(shù)據(jù)。測(cè)量商業(yè)事務(wù)的性能,需要抓取一件商業(yè)事務(wù)整體的響應(yīng)時(shí)間及其各個(gè)組件的響應(yīng)時(shí)間。這些響應(yīng)時(shí)間再與滿(mǎn)足業(yè)務(wù)需求的基準(zhǔn)進(jìn)行比較,從而決定應(yīng)用是否正常。

企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么

如果你只打算測(cè)量應(yīng)用的一個(gè)方面,本文會(huì)推薦你測(cè)量商業(yè)事務(wù)的表現(xiàn)。盡管容量指標(biāo)(container  metrics)能幫助你決定何時(shí)調(diào)節(jié)集群規(guī)模,但是商業(yè)事務(wù)才決定了應(yīng)用本身的性能。你無(wú)需詢(xún)問(wèn)應(yīng)用服務(wù)器線(xiàn)程池(thread  pool)的使用情況,而是關(guān)心用戶(hù)能否迅速完成他們的商業(yè)事務(wù),以及這些事務(wù)的表現(xiàn)是否正常。

介紹一點(diǎn)背景知識(shí):商業(yè)事務(wù)通過(guò)其入口進(jìn)行辨別,即用戶(hù)與你的業(yè)務(wù)進(jìn)行互動(dòng)的入口。這類(lèi)互動(dòng)包括:一個(gè)網(wǎng)頁(yè)請(qǐng)求,一個(gè)網(wǎng)頁(yè)服務(wù)調(diào)用,或消息隊(duì)列中的 一條消息。當(dāng)然,你也可以基于一個(gè)URL參數(shù)為同樣的網(wǎng)頁(yè)請(qǐng)求定義多個(gè)入口,或基于一個(gè)服務(wù)調(diào)用的內(nèi)容定義多個(gè)入口點(diǎn)。關(guān)鍵在于:商業(yè)交易必須與對(duì)你的業(yè) 務(wù)流程相關(guān)聯(lián),比如說(shuō)中國(guó)移動(dòng)的空中繳費(fèi)業(yè)務(wù)對(duì)應(yīng)到系統(tǒng)中是多個(gè)原子服務(wù),我們就應(yīng)該將這幾個(gè)原子服務(wù)通過(guò)相應(yīng)的關(guān)聯(lián)聚合成一個(gè)空中繳費(fèi)業(yè)務(wù)來(lái)進(jìn)行監(jiān)控。

辨別某個(gè)商業(yè)交易后,它的性能就會(huì)在整個(gè)應(yīng)用生態(tài)系統(tǒng)中進(jìn)行測(cè)量。每個(gè)商業(yè)交易的性能會(huì)與其基準(zhǔn)進(jìn)行比較,判定其是否正常。譬如,如果某個(gè)商業(yè)事務(wù)的響應(yīng)時(shí)間大于您設(shè)定的閾值,我們便判定其運(yùn)行異常。
總而言之,商業(yè)事務(wù)最能反映用戶(hù)體驗(yàn),因此它們也是最重要的抓取維度。

2.外部服務(wù)

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

企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么

從商業(yè)事務(wù)的角度來(lái)說(shuō),我們可以辨別并測(cè)量這些處于自身應(yīng)用的外部服務(wù)。有時(shí),我們需要配置監(jiān)控方法從而辨別那些包裹了外部服務(wù)調(diào)用的方法。但是對(duì)于常見(jiàn)的協(xié)議,諸如HTTP和JDBC,外部服務(wù)可以自動(dòng)檢測(cè)。

商業(yè)事務(wù)讓你對(duì)應(yīng)用的性能有了全局的掌控,幫助你對(duì)性能問(wèn)題進(jìn)行分類(lèi)。但是外部服務(wù)總能以意想不到的方式極大地影響應(yīng)用的運(yùn)行,所以你必須監(jiān)控它們。

3.垃圾回收

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

企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么

此外,因?yàn)槔厥掌鲿?huì)自動(dòng)釋放沒(méi)有引用的內(nèi)存空間,它減少了傳統(tǒng)的內(nèi)容泄露情況,即內(nèi)存被分配后,該內(nèi)存的引用在內(nèi)存釋放前就被刪除了。聽(tīng)起來(lái)就像靈丹妙藥,不是么?

盡管垃圾回收達(dá)成了無(wú)需手動(dòng)管理內(nèi)存的目標(biāo),也防止了傳統(tǒng)的內(nèi)存泄露,但是作為代價(jià),垃圾回收過(guò)程有時(shí)相當(dāng)笨拙。根據(jù)不同的JVM,垃圾回收策略也會(huì)不同。深入探討這些策略超出了本文的主旨。但是,讀者應(yīng)該明白,了解垃圾回收期的工作原理,以及***的配置方案至關(guān)重要。

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

  • 次級(jí)

  • 主要

為了釋放存活時(shí)間較短的對(duì)象,次級(jí)垃圾回收發(fā)生得相對(duì)頻繁。他們?cè)谶\(yùn)行時(shí)不會(huì)封鎖線(xiàn)程,產(chǎn)生的影響較小。

然而,主要垃圾回收,有時(shí)也稱(chēng)為“暫停世界(Stop The World, STW)”垃圾回收,因?yàn)樗麄冊(cè)谶\(yùn)行時(shí)會(huì)封鎖JVM中的所有線(xiàn)程。

企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么

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

企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么

根據(jù)不同的JVM,次級(jí)、主要回收的方式都會(huì)不同。圖五圖六展示了在Sun JVM內(nèi)次級(jí)、主要回收的操作方式。

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

最終,tenured空間會(huì)被填滿(mǎn),主要回收將會(huì)執(zhí)行。它不會(huì)將幸存者空間放不下的活動(dòng)對(duì)象拷貝到tenured空間中。此時(shí),JVM會(huì)封鎖所有線(xiàn)程,運(yùn)行可達(dá)性測(cè)試,清除年輕的數(shù)據(jù)(Eden和兩個(gè)幸存者空間),并壓縮tenured空間。我們將之稱(chēng)為主要回收。

企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么

你或許會(huì)想,堆越大,主要回收運(yùn)行得越不頻繁。但是當(dāng)它執(zhí)行時(shí),所需時(shí)間就會(huì)比小堆要長(zhǎng)。因此,調(diào)整好堆的大小和垃圾回收策略對(duì)于應(yīng)用的性能也很重要。

4.應(yīng)用布局

***要探討的性能指標(biāo)是應(yīng)用布局。因?yàn)樵频某霈F(xiàn),現(xiàn)在的應(yīng)用變得更加靈活:應(yīng)用環(huán)境可以根據(jù)用戶(hù)需求調(diào)節(jié)大小。因此,對(duì)應(yīng)用的布局進(jìn)行檢測(cè)從而決定 實(shí)例的多少是否合適是非常重要的。如果你的實(shí)例太多,你的云主機(jī)成本就會(huì)增加。但如果你沒(méi)有足夠的實(shí)例,商業(yè)事務(wù)就會(huì)受到影響。

在評(píng)測(cè)過(guò)程中,下面兩個(gè)指標(biāo)尤其重要:

  • 商業(yè)事務(wù)的吞吐量

  • 容器性能

商業(yè)事務(wù)應(yīng)該基準(zhǔn)化,你應(yīng)該知道在給定的時(shí)間里為了滿(mǎn)足基準(zhǔn)所需的實(shí)例數(shù)量。如果你的商業(yè)事務(wù)的吞吐量增長(zhǎng)突然,你就要增加實(shí)例以滿(mǎn)足用戶(hù)。

另一個(gè)需要監(jiān)測(cè)的是容器性能。具體來(lái)說(shuō),你想確定是否有應(yīng)用中的實(shí)例負(fù)載過(guò)大,如果有,你或許想在那個(gè)應(yīng)用中添加實(shí)例。從應(yīng)用的角度查看實(shí)例狀態(tài)很 重要,因?yàn)閱蝹€(gè)實(shí)例可能由于垃圾回收之類(lèi)的因素負(fù)載過(guò)大,但如果應(yīng)用中大多數(shù)實(shí)例都負(fù)載過(guò)大,則該應(yīng)用可能已經(jīng)無(wú)法支持它接受的訪(fǎng)問(wèn)量。

因?yàn)閼?yīng)用中的實(shí)例可以單個(gè)地調(diào)節(jié)規(guī)模,所以分析各個(gè)實(shí)例的性能進(jìn)而調(diào)整應(yīng)用布局就至關(guān)重要。

到此,關(guān)于“企業(yè)級(jí)Java應(yīng)用的性能指標(biāo)是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI