亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

從JVM角度思考--如何預(yù)估線上環(huán)境機(jī)器資源大小

Worktile / 1494人閱讀

摘要:預(yù)估的方式也很簡單,八種基本類型直接帶入字節(jié)大小,對象類型以基本類型為基礎(chǔ)預(yù)估大小。基本上臺核的機(jī)器就能滿足這次活動。五總結(jié)預(yù)估之后,并非意味著就完全沒問題了,還需要在上線時備好更多機(jī)器,防止意外發(fā)生。

(一)概述

如何給JVM虛擬機(jī)巧妙地設(shè)計參數(shù)對大部分開發(fā)來說一直是個隨緣的事情,可能是去網(wǎng)上拷貝一套參數(shù),可能是沿用公司其他應(yīng)用的參數(shù)。但是這個隨緣的操作可能就會給未來留下隱患。給JVM分配的內(nèi)存過大倒是沒什么問題,無非浪費(fèi)點(diǎn)資源,但是如果分配的內(nèi)存過小,就有可能導(dǎo)致頻繁的Full GC,給人一種系統(tǒng)一直很卡的感覺。這篇文章就通過一個實例分析一下如何結(jié)合場景設(shè)置JVM虛擬機(jī)參數(shù)。

當(dāng)然,本文更重要的是希望能通過預(yù)估參數(shù)的這個過程,讓你更加了解虛擬機(jī)內(nèi)部的一些東西,要想最準(zhǔn)確的參數(shù)設(shè)置,用一些工具記錄下JVM各個區(qū)域的變化會更有效。

(二)前置準(zhǔn)備

系統(tǒng)基于JDK1.8,堆結(jié)構(gòu)如下。

為了方便理解業(yè)務(wù),本文以電商的交易系統(tǒng)為例進(jìn)行講解。在微服務(wù)架構(gòu)下,目前主流的互聯(lián)網(wǎng)公司都會把自己的業(yè)務(wù)拆分成多個服務(wù)架構(gòu),比如電商系統(tǒng)會分為交易微服務(wù)、購物車微服務(wù)、商品微服務(wù)等等,可能這個粒度會更細(xì)。一個底層架構(gòu)會將這些微服務(wù)集成起來。實際上就是一個大的容器里放了一個個jar包。

(三)通常業(yè)務(wù)場景下的預(yù)估流程

一個交易微服務(wù)中會涉及到訂單對象、優(yōu)惠券對象、用戶對象、交易記錄對象等一系列對象,我們可以簡單預(yù)估在一次交易中這些對象會占用的空間。預(yù)估的方式也很簡單,八種基本類型直接帶入字節(jié)大小,對象類型以基本類型為基礎(chǔ)預(yù)估大小。只需要一個大致的值就行。

比如每次交易中一個訂單對象大約是1kb,優(yōu)惠券對象2kb,用戶對象4kb,交易記錄對象4kb,除此之外還可能會存在的List集合、數(shù)組等等。大約一次交易中產(chǎn)生的對象大約在25kb左右

一個每日交易量在100萬的系統(tǒng),交易量主要集中在6個小時中,平均每秒最大會有40筆訂單的產(chǎn)生。也就意味著每秒產(chǎn)生對象大小是1M。這些產(chǎn)生的對象在一次交易結(jié)束后都會被當(dāng)成垃圾,也就意味著每秒會產(chǎn)生1M的垃圾。

假設(shè)我們只有一臺2核4G的服務(wù)器,分配給堆的內(nèi)存一般就1.5G左右,通過計算,可以算出堆中每個區(qū)域的大小,如下圖:

通過計算可以得出,每400秒,400M的Eden區(qū)就滿了,會進(jìn)行一次young GC。98%的垃圾會被回收,意味著將會有8M左右的垃圾進(jìn)入在survivor轉(zhuǎn)移。一些對象在經(jīng)過幾次young GC之后會進(jìn)入到老年代中,這種情況Full GC的頻率會很低。雖然400秒一次youngGC略微還是快了些,但是對于系統(tǒng)而言基本上沒有影響。

(四)特殊業(yè)務(wù)場景下的預(yù)估流程

現(xiàn)在公司打算開展一次一小時的補(bǔ)貼活動,在活動的這一個小時時間內(nèi),訂單數(shù)量可能會是之前的20倍,也就意味著每秒會有800筆訂單的產(chǎn)生,每秒會產(chǎn)生20M的垃圾,這下會發(fā)生什么呢?

Eden區(qū)20秒就被占滿,20秒執(zhí)行一次youngGC,此時由于訂單過于多,可能部分接口響應(yīng)會達(dá)到幾秒甚至幾十秒,這些對象在經(jīng)過幾次youngGC之后就會逐步就會進(jìn)入到老年代中。一般在線上一個小時內(nèi)出現(xiàn)2次以上FullGC就得告警了。

這種情況下就意味著我們對機(jī)器資源以及JVM虛擬機(jī)內(nèi)存需要重新考慮了。

首先考慮提升JVM虛擬機(jī)內(nèi)存,由于硬件限制,JVM虛擬機(jī)內(nèi)存的提高首先要提高機(jī)器的性能,我們從雙核4G升級成4核8G。分配給堆4.5G的內(nèi)存。這個時候Eden區(qū)就會有1200M的內(nèi)存,同樣條件下,1分鐘才會執(zhí)行一次youngGC。20秒提高到1分鐘能保證響應(yīng)慢的接口對象也能在youngGC中被消滅,而不會進(jìn)入到老年代中。

同時我們可以把一臺機(jī)器升級為3臺機(jī)器,負(fù)載均衡后每臺機(jī)器的訂單壓力是原來的1/3,youngGC時間提升為原來的3倍,同時接口響應(yīng)時間加快。基本上3臺4核8G的機(jī)器就能滿足這次活動。

(五)總結(jié)

預(yù)估之后,并非意味著就完全沒問題了,還需要在上線時備好更多機(jī)器,防止意外發(fā)生。實踐能給你帶來最好的答案。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/121403.html

相關(guān)文章

  • 一次線上問題排查所引發(fā)的思考

    摘要:直到有一天你會碰到線上奇奇怪怪的問題,如線程執(zhí)行一個任務(wù)遲遲沒有返回,應(yīng)用假死。正好這次借助之前的一次生產(chǎn)問題來聊聊如何排查和解決問題。本地模擬上文介紹的是線程相關(guān)問題,現(xiàn)在來分析下內(nèi)存的問題。盡可能的減少多線程競爭鎖。 showImg(https://segmentfault.com/img/remote/1460000015568421?w=2048&h=1150); 前言 之前或...

    levy9527 評論0 收藏0
  • 機(jī)器學(xué)習(xí)在美團(tuán)配送系統(tǒng)的實踐:用技術(shù)還原真實世界

    摘要:可以說,美團(tuán)要建設(shè)的就是配送系統(tǒng)的超級大腦。美團(tuán)超腦配送系統(tǒng)目前互聯(lián)網(wǎng)技術(shù),很大部分還是針對線上產(chǎn)品和系統(tǒng)研發(fā),整個流程可以在線上全部完成,而這也正是配送技術(shù)最大的不同和挑戰(zhàn)。 在2018 AI開發(fā)者大會(AI NEXTCon)上,美團(tuán)配送AI方向負(fù)責(zé)人何仁清,分享了美團(tuán)在即時配送領(lǐng)域中機(jī)器學(xué)習(xí)技術(shù)的最新進(jìn)展,以及如何通過大數(shù)據(jù)和機(jī)器學(xué)習(xí)手段,建立對線下真實世界各種場景的感知能力,還原...

    hearaway 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<