摘要:預估的方式也很簡單,八種基本類型直接帶入字節大小,對象類型以基本類型為基礎預估大小。基本上臺核的機器就能滿足這次活動。五總結預估之后,并非意味著就完全沒問題了,還需要在上線時備好更多機器,防止意外發生。
如何給JVM虛擬機巧妙地設計參數對大部分開發來說一直是個隨緣的事情,可能是去網上拷貝一套參數,可能是沿用公司其他應用的參數。但是這個隨緣的操作可能就會給未來留下隱患。給JVM分配的內存過大倒是沒什么問題,無非浪費點資源,但是如果分配的內存過小,就有可能導致頻繁的Full GC,給人一種系統一直很卡的感覺。這篇文章就通過一個實例分析一下如何結合場景設置JVM虛擬機參數。
當然,本文更重要的是希望能通過預估參數的這個過程,讓你更加了解虛擬機內部的一些東西,要想最準確的參數設置,用一些工具記錄下JVM各個區域的變化會更有效。
系統基于JDK1.8,堆結構如下。
為了方便理解業務,本文以電商的交易系統為例進行講解。在微服務架構下,目前主流的互聯網公司都會把自己的業務拆分成多個服務架構,比如電商系統會分為交易微服務、購物車微服務、商品微服務等等,可能這個粒度會更細。一個底層架構會將這些微服務集成起來。實際上就是一個大的容器里放了一個個jar包。
一個交易微服務中會涉及到訂單對象、優惠券對象、用戶對象、交易記錄對象等一系列對象,我們可以簡單預估在一次交易中這些對象會占用的空間。預估的方式也很簡單,八種基本類型直接帶入字節大小,對象類型以基本類型為基礎預估大小。只需要一個大致的值就行。
比如每次交易中一個訂單對象大約是1kb,優惠券對象2kb,用戶對象4kb,交易記錄對象4kb,除此之外還可能會存在的List集合、數組等等。大約一次交易中產生的對象大約在25kb左右。
一個每日交易量在100萬的系統,交易量主要集中在6個小時中,平均每秒最大會有40筆訂單的產生。也就意味著每秒產生對象大小是1M。這些產生的對象在一次交易結束后都會被當成垃圾,也就意味著每秒會產生1M的垃圾。
假設我們只有一臺2核4G的服務器,分配給堆的內存一般就1.5G左右,通過計算,可以算出堆中每個區域的大小,如下圖:
通過計算可以得出,每400秒,400M的Eden區就滿了,會進行一次young GC。98%的垃圾會被回收,意味著將會有8M左右的垃圾進入在survivor轉移。一些對象在經過幾次young GC之后會進入到老年代中,這種情況Full GC的頻率會很低。雖然400秒一次youngGC略微還是快了些,但是對于系統而言基本上沒有影響。
現在公司打算開展一次一小時的補貼活動,在活動的這一個小時時間內,訂單數量可能會是之前的20倍,也就意味著每秒會有800筆訂單的產生,每秒會產生20M的垃圾,這下會發生什么呢?
Eden區20秒就被占滿,20秒執行一次youngGC,此時由于訂單過于多,可能部分接口響應會達到幾秒甚至幾十秒,這些對象在經過幾次youngGC之后就會逐步就會進入到老年代中。一般在線上一個小時內出現2次以上FullGC就得告警了。
這種情況下就意味著我們對機器資源以及JVM虛擬機內存需要重新考慮了。
首先考慮提升JVM虛擬機內存,由于硬件限制,JVM虛擬機內存的提高首先要提高機器的性能,我們從雙核4G升級成4核8G。分配給堆4.5G的內存。這個時候Eden區就會有1200M的內存,同樣條件下,1分鐘才會執行一次youngGC。20秒提高到1分鐘能保證響應慢的接口對象也能在youngGC中被消滅,而不會進入到老年代中。
同時我們可以把一臺機器升級為3臺機器,負載均衡后每臺機器的訂單壓力是原來的1/3,youngGC時間提升為原來的3倍,同時接口響應時間加快。基本上3臺4核8G的機器就能滿足這次活動。
預估之后,并非意味著就完全沒問題了,還需要在上線時備好更多機器,防止意外發生。實踐能給你帶來最好的答案。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121403.html
摘要:直到有一天你會碰到線上奇奇怪怪的問題,如線程執行一個任務遲遲沒有返回,應用假死。正好這次借助之前的一次生產問題來聊聊如何排查和解決問題。本地模擬上文介紹的是線程相關問題,現在來分析下內存的問題。盡可能的減少多線程競爭鎖。 showImg(https://segmentfault.com/img/remote/1460000015568421?w=2048&h=1150); 前言 之前或...
摘要:可以說,美團要建設的就是配送系統的超級大腦。美團超腦配送系統目前互聯網技術,很大部分還是針對線上產品和系統研發,整個流程可以在線上全部完成,而這也正是配送技術最大的不同和挑戰。 在2018 AI開發者大會(AI NEXTCon)上,美團配送AI方向負責人何仁清,分享了美團在即時配送領域中機器學習技術的最新進展,以及如何通過大數據和機器學習手段,建立對線下真實世界各種場景的感知能力,還原...
閱讀 1356·2021-10-09 09:44
閱讀 1440·2021-09-28 09:36
閱讀 15926·2021-09-22 15:55
閱讀 1238·2021-09-22 15:45
閱讀 2199·2021-09-02 09:48
閱讀 2783·2019-08-29 17:19
閱讀 2296·2019-08-29 10:54
閱讀 906·2019-08-23 18:40