国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五)

這篇具有很好參考價(jià)值的文章主要介紹了JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

您好,這里是碼農(nóng)鏢局CSDN博客,歡迎您來(lái),歡迎您再來(lái)~


除了Tomcat、Jetty,另一個(gè)常見(jiàn)的可能出現(xiàn)OOM的地方就是微服務(wù)架構(gòu)下的一次RPC調(diào)用過(guò)程中。筆者曾經(jīng)經(jīng)歷過(guò)的一次OOM就是基于Thrift框架封裝出來(lái)的一個(gè)RPC框架導(dǎo)致的宕機(jī)。

JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五),技術(shù),jvm,java,GC實(shí)踐,GC

?

也就是當(dāng)服務(wù)A更新后,服務(wù)B宕機(jī)了。

通過(guò)查看GC日志,發(fā)現(xiàn)是JVM堆拋出的OOM。打開(kāi)內(nèi)存快照,發(fā)現(xiàn)超大byte[]數(shù)組,而這個(gè)超大的byte[]數(shù)組是由RPC框架持有的。

JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五),技術(shù),jvm,java,GC實(shí)踐,GC

?

初步判定原因是:服務(wù)A修改了Request類,但服務(wù)B未更新該類,還是舊版本,因此導(dǎo)致反序列化失敗時(shí)RPC會(huì)開(kāi)辟一個(gè)byte[]數(shù)組,默認(rèn)大小是4G。

JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五),技術(shù),jvm,java,GC實(shí)踐,GC

?

因此最終的解決方案也很簡(jiǎn)單:

1、服務(wù)B更新Request類;

2、將RPC默認(rèn)byte[]數(shù)組大小調(diào)整為4M。

另一次事故是由馬虎的開(kāi)發(fā)工程師引起的。某個(gè)馬虎的工程師用mybatis寫的SQL語(yǔ)句在某些情況下允許不加where條件就可以執(zhí)行,這導(dǎo)致一下子查出來(lái)上百萬(wàn)條數(shù)據(jù),引發(fā)系統(tǒng)OOM。這種情況下,MAT工具對(duì)由Web容器(Tomcat/Jetty)或者RPC等底層框架所引發(fā)的OOM故障,用處并不大。但如果OOM主要是由于業(yè)務(wù)代碼導(dǎo)致,那使用起來(lái)就簡(jiǎn)單得多。使用MAT工具定位問(wèn)題的時(shí)候:

1、利用histogram功能占用內(nèi)存最多的對(duì)象

2、找到占用內(nèi)存過(guò)多的對(duì)象,并深入看看對(duì)象之間的持有關(guān)系

3、找到問(wèn)題代碼

與前面的RPC引發(fā)的OOM類似,有一個(gè)線上數(shù)據(jù)同步系統(tǒng),專門從另一個(gè)系統(tǒng)同步數(shù)據(jù),通過(guò)kafka來(lái)發(fā)送與消費(fèi)數(shù)據(jù)。即使是這么簡(jiǎn)單的一個(gè)系統(tǒng),也會(huì)不時(shí)地報(bào)一個(gè)OOM錯(cuò)誤,且頻率越來(lái)越高。這難道又是工程師的粗心引起的嗎?

JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五),技術(shù),jvm,java,GC實(shí)踐,GC

?

通過(guò)簡(jiǎn)單分析可以知道,既然每次重啟過(guò)后都會(huì)頻繁出現(xiàn)OOM,就說(shuō)明內(nèi)存使用率會(huì)不斷上漲且難以清理。而JVM出現(xiàn)OOM,一般都是由兩種情況引起:

1、要么高并發(fā)高負(fù)載,一瞬間創(chuàng)建太多對(duì)象,導(dǎo)致內(nèi)存放不下

2、要么存活對(duì)象太多,GC無(wú)法回收

而針對(duì)此案例,極有可能就是第二種情況:存活對(duì)象太多。

JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五),技術(shù),jvm,java,GC實(shí)踐,GC

?

這一點(diǎn)可以通過(guò)jstat來(lái)驗(yàn)證。重啟系統(tǒng)后,啟動(dòng)jstat,觀察到:

1、老年代持續(xù)增長(zhǎng),且老年代使用率達(dá)到100%后,F(xiàn)ull GC根本回收不掉任何對(duì)象

2、老年代維持一段時(shí)間的100%使用率后,發(fā)生OOM

同時(shí)通過(guò)MAT找到占用內(nèi)存最多的對(duì)象。利用Histogram功能,最終發(fā)現(xiàn)問(wèn)題原因:

1、kafka的吞吐量和數(shù)據(jù)庫(kù)的吞吐量完全不是一個(gè)數(shù)量級(jí);

2、數(shù)據(jù)庫(kù)的處理能力慢,導(dǎo)致數(shù)據(jù)不斷積壓,最終內(nèi)存溢出;

3、典型的沒(méi)控制好生產(chǎn)與消費(fèi)數(shù)據(jù)的速率導(dǎo)致的OOM。

JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五),技術(shù),jvm,java,GC實(shí)踐,GC

?

最后總結(jié)一下這幾個(gè)案例:

1、必須對(duì)線上系統(tǒng)使用的各種技術(shù),從服務(wù)器框架,到第三方框架,到Tomcat/Jetty等Web服務(wù)器,再到各種底層的中間件系統(tǒng),都有深入的理解;

2、一般線上系統(tǒng)的故障,極少數(shù)是由業(yè)務(wù)代碼直接導(dǎo)致的——更一般的情況是某個(gè)開(kāi)源技術(shù)的內(nèi)核代碼就可能存在一定的故障和缺陷,只是在某些極端場(chǎng)景下才被發(fā)現(xiàn)而已;

3、定位、解決OOM問(wèn)題,需要仔細(xì)研究底層源碼,再結(jié)合線上業(yè)務(wù)、系統(tǒng)負(fù)載、參數(shù)配置和系統(tǒng)日志(含GC日志)等多種手段,才能完成;

4、一般情況下禁止顯式調(diào)用System.gc(),但是如果開(kāi)發(fā)的是文件存儲(chǔ)、IM等大量使用NIO技術(shù)的應(yīng)用,就不要禁止System.gc(),但業(yè)務(wù)代碼還是不要出現(xiàn)System.gc();

5、生產(chǎn)環(huán)境一不使用parallel垃圾回收器;

6、一個(gè)Tomcat就是一個(gè)進(jìn)程,不管在上面部署了多少個(gè)應(yīng)用,都只有一個(gè)JVM進(jìn)程。


感謝您的大駕光臨!歡迎騷擾,不勝榮幸~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-614041.html

到了這里,關(guān)于JVM系統(tǒng)優(yōu)化實(shí)踐(22):GC生產(chǎn)環(huán)境案例(五)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一種KV存儲(chǔ)的GC優(yōu)化實(shí)踐

    作者:vivo 互聯(lián)網(wǎng)服務(wù)器團(tuán)隊(duì)- Yuan Jian Wei 從內(nèi)部需求出發(fā),我們基于TiKV設(shè)計(jì)了一款兼容Redis的KV存儲(chǔ)?;赥iKV的數(shù)據(jù)存儲(chǔ)機(jī)制,對(duì)于窗口數(shù)據(jù)的處理以及過(guò)期數(shù)據(jù)的GC問(wèn)題卻成為一個(gè)難題。本文希望基于從KV存儲(chǔ)的設(shè)計(jì)開(kāi)始講解,到GC設(shè)計(jì)的逐層優(yōu)化的過(guò)程,從問(wèn)題的存在到不

    2024年02月04日
    瀏覽(16)
  • 【案例教程】FVCOM流域、海洋水環(huán)境數(shù)值模擬方法及實(shí)踐技術(shù)應(yīng)用

    近年來(lái),隨著人類活動(dòng)產(chǎn)生營(yíng)養(yǎng)負(fù)荷的增加,流域、海洋生態(tài)系統(tǒng)面臨嚴(yán)重威脅。近岸水質(zhì)數(shù)值模是近岸水環(huán)境保護(hù)的有效工具,已經(jīng)應(yīng)用于近岸水環(huán)境污染控制、水質(zhì)規(guī)劃管理中。FVCOM在近岸水環(huán)境模擬方面具有一定優(yōu)勢(shì),如采用非結(jié)構(gòu)化三角形網(wǎng)格易于擬合岸線和局部加

    2023年04月21日
    瀏覽(17)
  • JVM學(xué)習(xí)(三)--生產(chǎn)環(huán)境的線程問(wèn)題診斷

    使用top命令 使用ps H -eo pid,tid,%cpu | grep 進(jìn)程id? ?(可以具體定位到某個(gè)進(jìn)程的某個(gè)線程的cpu占用情況) 使用jstack 進(jìn)程id |grep 32e4 -A20 (這里32e4就是線程的tid的16進(jìn)制,A20表示顯示前20行)可以找到當(dāng)前進(jìn)程的所有線程的具體信息,進(jìn)而具體的代碼行數(shù),但是注意這里顯示出來(lái)的

    2024年02月09日
    瀏覽(14)
  • JVM 內(nèi)存大對(duì)象監(jiān)控和優(yōu)化實(shí)踐

    JVM 內(nèi)存大對(duì)象監(jiān)控和優(yōu)化實(shí)踐

    作者:vivo 互聯(lián)網(wǎng)服務(wù)器團(tuán)隊(duì) - Liu Zhen、Ye Wenhao 服務(wù)器內(nèi)存問(wèn)題是影響應(yīng)用程序性能和穩(wěn)定性的重要因素之一,需要及時(shí)排查和優(yōu)化。本文介紹了某核心服務(wù)內(nèi)存問(wèn)題排查與解決過(guò)程。首先在JVM與大對(duì)象優(yōu)化上進(jìn)行了有效的實(shí)踐,其次在故障轉(zhuǎn)移與大對(duì)象監(jiān)控上提出了可靠的

    2024年02月10日
    瀏覽(23)
  • 車企數(shù)據(jù)治理實(shí)踐案例,實(shí)現(xiàn)數(shù)據(jù)生產(chǎn)、消費(fèi)的閉環(huán)鏈路 | 數(shù)字化標(biāo)桿

    車企數(shù)據(jù)治理實(shí)踐案例,實(shí)現(xiàn)數(shù)據(jù)生產(chǎn)、消費(fèi)的閉環(huán)鏈路 | 數(shù)字化標(biāo)桿

    隨著業(yè)務(wù)飛速發(fā)展,某汽車制造企業(yè)業(yè)務(wù)系統(tǒng)數(shù)量、復(fù)雜度和數(shù)據(jù)量都在呈幾何級(jí)數(shù)的上漲,這就對(duì)于企業(yè)IT能力和IT架構(gòu)模式的要求越來(lái)越高。加之企業(yè)大力發(fā)展數(shù)字化營(yíng)銷、新能源車等業(yè)務(wù),希望通過(guò)持續(xù)優(yōu)化客戶體驗(yàn),創(chuàng)造可持續(xù)發(fā)展的數(shù)字化轉(zhuǎn)型之路。 為更好應(yīng)對(duì)數(shù)

    2024年02月05日
    瀏覽(23)
  • 生產(chǎn)環(huán)境ES集群擴(kuò)容及優(yōu)化

    ES集群優(yōu)化 具體詳情請(qǐng)看官方文檔建議:https://www.elastic.co/guide/en/elasticsearch/reference/7.5/restart-cluster.html 1.先把elasticsearch的服務(wù)停掉 2.修改jvm.options配置文件下最大、最小內(nèi)存限制 3.重啟elasticsearch 4.配置 5.可供使用的查詢地址

    2024年02月12日
    瀏覽(22)
  • 安全實(shí)踐:保障 Kubernetes 生產(chǎn)環(huán)境的安全性

    安全實(shí)踐:保障 Kubernetes 生產(chǎn)環(huán)境的安全性

    ▲?點(diǎn)擊上方\\\"DevOps和k8s全棧技術(shù)\\\"關(guān)注公眾號(hào) Kubernetes(簡(jiǎn)稱 K8s)是一個(gè)強(qiáng)大的容器編排平臺(tái),廣泛應(yīng)用于生產(chǎn)環(huán)境中。然而,與其功能強(qiáng)大相對(duì)應(yīng)的是對(duì)安全性的高要求。在生產(chǎn)環(huán)境中,我們必須采取一系列措施來(lái)保護(hù) Kubernetes 集群免受潛在的威脅和攻擊。本文將介紹一些關(guān)

    2024年02月03日
    瀏覽(100)
  • 【案例教程】基于最新導(dǎo)則下生態(tài)環(huán)評(píng)報(bào)告編制技術(shù)暨報(bào)告篇、制圖篇、指數(shù)篇、綜合應(yīng)用篇系統(tǒng)性實(shí)踐技能提升

    根據(jù)生態(tài)環(huán)評(píng)內(nèi)容龐雜、綜合性強(qiáng)的特點(diǎn),依據(jù)生態(tài)環(huán)評(píng)最新導(dǎo)則,將內(nèi)容分為4大篇章 (報(bào)告篇、制圖篇、指數(shù)篇、綜合篇) 、10大專題(生態(tài)環(huán)評(píng)報(bào)告編制、土地利用圖的制作、植被類型及植被覆蓋度圖的制作、物種適宜生境分布圖的制作、生物多樣性測(cè)定、生物量及凈初級(jí)

    2024年02月06日
    瀏覽(23)
  • AIGC時(shí)代下阿里云視頻云媒體內(nèi)容生產(chǎn)技術(shù)實(shí)踐

    AIGC時(shí)代下阿里云視頻云媒體內(nèi)容生產(chǎn)技術(shù)實(shí)踐

    編者按 AIGC時(shí)代下,媒體內(nèi)容生產(chǎn)領(lǐng)域隨著AI的出現(xiàn)也涌現(xiàn)出更多的變化與挑戰(zhàn)。面對(duì)AI的巨大沖擊,如何優(yōu)化或重構(gòu)媒體內(nèi)容生產(chǎn)技術(shù)架構(gòu)?在多樣的應(yīng)用場(chǎng)景中媒體內(nèi)容生產(chǎn)技術(shù)又有著怎樣的實(shí)踐效果?LiveVideoStackCon2023深圳站邀請(qǐng)到阿里云智能資深技術(shù)專家鄒娟,與大家分

    2024年03月15日
    瀏覽(26)
  • 在生產(chǎn)環(huán)境中部署Elasticsearch:最佳實(shí)踐和故障排除技巧

    在生產(chǎn)環(huán)境中部署Elasticsearch:最佳實(shí)踐和故障排除技巧

    「作者主頁(yè)」 :雪碧有白泡泡 「?jìng)€(gè)人網(wǎng)站」 :雪碧的個(gè)人網(wǎng)站 「推薦專欄」 : ★ java一站式服務(wù) ★ ★ React從入門到精通 ★ ★ 前端炫酷代碼分享 ★ ★ 從0到英雄,vue成神之路★ ★ uniapp-從構(gòu)建到提升 ★ ★ 從0到英雄,vue成神之路 ★ ★ 解決算法,一個(gè)專欄就夠了 ★ ★

    2024年02月16日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包