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

云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路

這篇具有很好參考價(jià)值的文章主要介紹了云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Docker環(huán)境下的JVM參數(shù)非定值配置 —— 筑夢(mèng)之路_docker jvm設(shè)置-CSDN博客

之前簡(jiǎn)單地記錄過(guò)一篇,這里在之前的基礎(chǔ)上更加細(xì)化一下。

場(chǎng)景說(shuō)明

使用Java開(kāi)發(fā)且設(shè)置的JVM堆空間過(guò)小時(shí),程序會(huì)出現(xiàn)系統(tǒng)內(nèi)存不足OOM(Out of Memory)的問(wèn)題。事件中心的OOM事件是指系統(tǒng)內(nèi)存不足時(shí),觸發(fā)了Linux的內(nèi)存回收(OOM Killer)機(jī)制,此時(shí)系統(tǒng)會(huì)終止內(nèi)存占用較多的進(jìn)程以保證系統(tǒng)的正常運(yùn)行。特別是在容器環(huán)境下,不合理的JVM堆參數(shù)設(shè)置會(huì)導(dǎo)致各種異常現(xiàn)象產(chǎn)生,例如應(yīng)用堆大小還未到達(dá)JVM設(shè)置的堆閾值或應(yīng)用的規(guī)格限制,就因?yàn)镺OM導(dǎo)致重啟。

一般操作

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-738058.html

一般操作是設(shè)置-Xmx來(lái)限制JVM堆大小,但該方式存在以下問(wèn)題:

  • 當(dāng)規(guī)格大小調(diào)整后,需要重新設(shè)置堆大小參數(shù)。

  • 當(dāng)參數(shù)設(shè)置不合理時(shí),會(huì)出現(xiàn)應(yīng)用堆大小未達(dá)到閾值但容器OOM被強(qiáng)制關(guān)閉的情況。

  • 在容器環(huán)境下,Java只能獲取服務(wù)器的配置,無(wú)法感知容器內(nèi)存限制。

「應(yīng)用程序出現(xiàn)OOM問(wèn)題時(shí),會(huì)觸發(fā)Linux內(nèi)核的OOM Killer機(jī)制。該機(jī)制能夠監(jiān)控占用過(guò)大內(nèi)存,尤其是瞬間消耗大量?jī)?nèi)存的進(jìn)程,然后它會(huì)強(qiáng)制關(guān)閉某項(xiàng)進(jìn)程以騰出內(nèi)存留給系統(tǒng),避免系統(tǒng)立刻崩潰?!?/strong>?

最佳實(shí)踐

?推薦設(shè)置的JVM參數(shù)如下所示:

-XX:+UseContainerSupport 
-XX:InitialRAMPercentage=75.0 
-XX:MaxRAMPercentage=75.0 
-XX:MinRAMPercentage=75.0 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-Xloggc:/home/admin/nas/gc-${POD_IP}-$(date '+%s').log 
-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=/home/admin/nas/dump-${POD_IP}-$(date '+%s').hprof
參數(shù) 說(shuō)明
-XX:+UseContainerSupport 使用容器內(nèi)存。允許JVM從主機(jī)讀取cgroup限制,例如可用的CPU和RAM,并進(jìn)行相應(yīng)的配置。當(dāng)容器超過(guò)內(nèi)存限制時(shí),會(huì)拋出OOM異常,而不是強(qiáng)制關(guān)閉容器。
-XX:InitialRAMPercentage 設(shè)置JVM使用容器內(nèi)存的初始百分比。建議與-XX:MaxRAMPercentage保持一致,推薦設(shè)置為70.0。
-XX:MaxRAMPercentage 設(shè)置JVM使用容器內(nèi)存的最大百分比。由于存在系統(tǒng)組件開(kāi)銷(xiāo),建議最大不超過(guò)75.0,推薦設(shè)置為70.0。
-XX:+PrintGCDetails 輸出GC詳細(xì)信息。
-XX:+PrintGCDateStamps 輸出GC時(shí)間戳。日期形式,例如2019-12-24T21:53:59.234+0800。
-Xloggc:/home/admin/nas/gc-${POD_IP}-$(date '+%s').log GC日志文件路徑。需保證Log文件所在容器路徑已存在,建議您將該容器路徑掛載到NAS目錄或收集到SLS,以便自動(dòng)創(chuàng)建目錄以及實(shí)現(xiàn)日志的持久化存儲(chǔ)。
-XX:+HeapDumpOnOutOfMemoryError JVM發(fā)生OOM時(shí),自動(dòng)生成DUMP文件。
-XX:HeapDumpPath=/home/admin/nas/dump-${POD_IP}-$(date '+%s').hprof DUMP文件路徑。需保證DUMP文件所在容器路徑已存在,建議您將該容器路徑掛載到NAS目錄,以便自動(dòng)創(chuàng)建目錄以及實(shí)現(xiàn)日志的持久化存儲(chǔ)。

注意事項(xiàng):

使用-XX:+UseContainerSupport參數(shù)需JDK 8u191+、JDK 10及以上版本。JDK 11版本下日志相關(guān)的參數(shù)-XX:+PrintGCDetails、-XX:+PrintGCDateStamps、-Xloggc:LOG_PATH/gc.log代替。Dragonwell 11暫不支持${POD_IP} 變量。如果您沒(méi)有將/home/admin/nas容器路徑掛載到NAS目錄,則必須保證該目錄在應(yīng)用啟動(dòng)前已存在,否則將不會(huì)產(chǎn)生日志文件。?

K8S下常見(jiàn)問(wèn)題

1.?容器出現(xiàn)137退出碼的含義是什么?

當(dāng)容器使用內(nèi)存超過(guò)限制時(shí),會(huì)出現(xiàn)容器OOM,導(dǎo)致容器被強(qiáng)制關(guān)閉。此時(shí)業(yè)務(wù)應(yīng)用內(nèi)存可能并未達(dá)到JVM堆大小上限,所以不會(huì)產(chǎn)生dump日志。建議您調(diào)小JVM堆大小的上限,為容器內(nèi)其他系統(tǒng)組件預(yù)留足夠多的內(nèi)存空間。

云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路,云計(jì)算,linux系統(tǒng)運(yùn)維,Java技術(shù),云原生,java,jvm?

2.?為什么發(fā)生OOM卻沒(méi)有生成dump文件?

當(dāng)發(fā)生OOM Killer時(shí),并不一定會(huì)發(fā)生JVM OOM,所以不會(huì)生成dump文件。您可以采取以下方式來(lái)避免這種情況。

  • 如果是Java應(yīng)用,可以適當(dāng)調(diào)小JVM的堆內(nèi)存大小。具體配置,請(qǐng)參見(jiàn)本文。

  • 如果是非Java應(yīng)用,可以調(diào)整實(shí)例規(guī)格,保證充裕的內(nèi)存資源。

3.?堆大小和規(guī)格內(nèi)存的參數(shù)值可以相同嗎?

不可以。

因?yàn)橄到y(tǒng)自身組件存在內(nèi)存開(kāi)銷(xiāo),所以不能將JVM堆大小設(shè)置為和規(guī)格內(nèi)存大小相同的數(shù)值,需要為這些系統(tǒng)組件預(yù)留足夠的內(nèi)存空間。

4.?在JDK 8版本下設(shè)置-XX:MaxRAMPercentage值為整數(shù)時(shí)報(bào)錯(cuò)怎么處理?

這是JDK 8的一個(gè)Bug。

具體信息,請(qǐng)參見(jiàn)Java Bug Database。例如,在JDK 8u191版本下,設(shè)置-XX:MaxRAMPercentage=70,此時(shí)JVM會(huì)啟動(dòng)報(bào)錯(cuò)。

解決方案如下:
  • 方式一:設(shè)置-XX:MaxRAMPercentage為70.0。說(shuō)明 如果您使用了-XX:InitialRAMPercentage或-XX:MinRAMPercentage,參數(shù)值同樣不可設(shè)置為整數(shù)。

  • 方式二:升級(jí)JDK版本至JDK 10及以上版本。

5.?為什么JVM參數(shù)設(shè)置了6 GB,但是內(nèi)存使用率卻很低?

雖然JVM參數(shù)已設(shè)置-Xms6g -Xmx6g,但是操作系統(tǒng)不會(huì)馬上分配6 GB的物理內(nèi)存,需要實(shí)際使用后才分配。因此,內(nèi)存使用率在應(yīng)用啟動(dòng)的時(shí)候,會(huì)相對(duì)較低,后續(xù)會(huì)出現(xiàn)攀爬現(xiàn)象。?

堆棧內(nèi)存調(diào)優(yōu)

云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路,云計(jì)算,linux系統(tǒng)運(yùn)維,Java技術(shù),云原生,java,jvm?回收器GC調(diào)優(yōu)

吞吐量?jī)?yōu)先

云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路,云計(jì)算,linux系統(tǒng)運(yùn)維,Java技術(shù),云原生,java,jvm

響應(yīng)時(shí)間優(yōu)先

云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路,云計(jì)算,linux系統(tǒng)運(yùn)維,Java技術(shù),云原生,java,jvm用于輔助

云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路,云計(jì)算,linux系統(tǒng)運(yùn)維,Java技術(shù),云原生,java,jvm?搜集來(lái)自:容器JVM內(nèi)存配置最佳實(shí)踐

?

?

到了這里,關(guān)于云原生環(huán)境下JAVA應(yīng)用容器JVM內(nèi)存如何配置?—— 筑夢(mèng)之路的文章就介紹完了。如果您還想了解更多內(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)文章

  • IDEA遠(yuǎn)程調(diào)試kubernetes環(huán)境中的容器應(yīng)用(Java應(yīng)用)

    IDEA遠(yuǎn)程調(diào)試kubernetes環(huán)境中的容器應(yīng)用(Java應(yīng)用) 應(yīng)用場(chǎng)景:Java開(kāi)發(fā)的項(xiàng)目在本地運(yùn)行正常,然后將 容器運(yùn)行方式的項(xiàng)目發(fā)布到遠(yuǎn)端服務(wù)器上線運(yùn)行后,出現(xiàn)了異常情況,此時(shí)頻繁去修改代碼發(fā)布鏡像進(jìn)行問(wèn)題驗(yàn)證,將耗費(fèi)較大的時(shí)間成本。 為了提高問(wèn)題定位和代碼調(diào)試效率

    2024年02月10日
    瀏覽(22)
  • 【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    在上一篇文章中,我們學(xué)習(xí)了針對(duì)容器設(shè)置啟動(dòng)時(shí)要執(zhí)行的命令和參數(shù)、定義相互依賴的環(huán)境變量、為容器設(shè)置環(huán)境變量,三種設(shè)置方式,本篇文章,我們將繼續(xù)學(xué)習(xí)數(shù)據(jù)的傳遞。 有兩種方式可以將 Pod 和 Container 字段傳遞給運(yùn)行中的容器: 環(huán)境變量 卷文件 這兩種呈現(xiàn) Pod

    2024年01月25日
    瀏覽(526)
  • “深入探究JVM內(nèi)部機(jī)制:如何實(shí)現(xiàn)Java程序的運(yùn)行環(huán)境?“

    標(biāo)題:深入探究JVM內(nèi)部機(jī)制:如何實(shí)現(xiàn)Java程序的運(yùn)行環(huán)境? 摘要:本文將深入探究Java虛擬機(jī)(JVM)的內(nèi)部機(jī)制,重點(diǎn)討論JVM如何實(shí)現(xiàn)Java程序的運(yùn)行環(huán)境。我們將從JVM的結(jié)構(gòu)、類加載、內(nèi)存管理、垃圾回收等方面展開(kāi)講解,并通過(guò)示例代碼具體展示JVM內(nèi)部機(jī)制的運(yùn)作過(guò)程。

    2024年02月11日
    瀏覽(31)
  • 【云原生】Docker容器資源限制(CPU/內(nèi)存/磁盤(pán))

    【云原生】Docker容器資源限制(CPU/內(nèi)存/磁盤(pán))

    目錄 ?編輯 1.限制容器對(duì)內(nèi)存的使用 2.限制容器對(duì)CPU的使用 3.block IO權(quán)重 4.實(shí)現(xiàn)容器的底層技術(shù) 1.cgroup 1.查看容器的ID 2.在文件中查找 2.namespace 1.Mount 2.UTS 3.IPC 4.PID 5.Network 6.User 1.限制容器對(duì)內(nèi)存的使用 ?個(gè) docker host 上會(huì)運(yùn)?若?容器,每個(gè)容器都需要 CPU、內(nèi)存和 IO 資源。對(duì)

    2024年02月14日
    瀏覽(26)
  • docker Java 應(yīng)用堆內(nèi)存配置

    本文主要是講解 InitialRAMPercentage、MinRAMPercentage, MaxRAMPercentage 三個(gè) JVM 參數(shù)之間的區(qū)別。參數(shù)由 Java 8 update 191 引入,主要是用于配置運(yùn)行在物理機(jī)或者容器中的 Java 應(yīng)用堆內(nèi)存大小。 -XX:InitialRAMPercentage 用于配置堆的初始化大小。假如物理機(jī)或者容器的內(nèi)存大?。╨imit 限制)為

    2024年04月22日
    瀏覽(22)
  • 【云原生】監(jiān)視Docker桌面的容器內(nèi)存和CPU使用情況

    【云原生】監(jiān)視Docker桌面的容器內(nèi)存和CPU使用情況

    目錄 一、如何監(jiān)視Docker桌面的容器內(nèi)存和CPU使用情況 1、stats命令 2、Docker 統(tǒng)計(jì)命令stats是如何工作的 2.1、命令與描述 2.2、OPTIONS 2.3、例子 2.4、格式化 3、滿足資源使用擴(kuò)展 4、如何安裝“資源使用情況”擴(kuò)展插件? 5、總結(jié) ? ? Docker 有一個(gè)內(nèi)置的 stats 命令,可以簡(jiǎn)單地查看

    2023年04月09日
    瀏覽(84)
  • IDEA工具遠(yuǎn)程DEBUG調(diào)試K8S環(huán)境中的容器應(yīng)用(Java應(yīng)用)

    IDEA遠(yuǎn)程調(diào)試kubernetes環(huán)境中的容器應(yīng)用(Java應(yīng)用) 應(yīng)用場(chǎng)景:Java開(kāi)發(fā)的項(xiàng)目在本地運(yùn)行正常,然后將 容器運(yùn)行方式的項(xiàng)目發(fā)布到遠(yuǎn)端服務(wù)器上線運(yùn)行后,出現(xiàn)了異常情況,此時(shí)頻繁去修改代碼發(fā)布鏡像進(jìn)行問(wèn)題驗(yàn)證,將耗費(fèi)較大的時(shí)間成本。 為了提高問(wèn)題定位和代碼調(diào)試效率

    2024年02月10日
    瀏覽(27)
  • 如何在 容器中 優(yōu)雅的 運(yùn)行 java 應(yīng)用

    當(dāng)需要運(yùn)行Java應(yīng)用時(shí),不管在機(jī)器上還是容器里,一般的做法是運(yùn)行 java 命令。 java -jar /opt/app.jar 即可 如果是多多jar 文件的只需用到 java -cp lib/* com.example.Main 定類路徑(classpath)和入口 Java 類即可。 但 在構(gòu)建容器鏡像時(shí),一般使用 Dockerfile 的 ENTRYPOINT 來(lái)指定運(yùn)行的 java 命

    2024年02月15日
    瀏覽(17)
  • java-JVM內(nèi)存區(qū)域&JVM運(yùn)行時(shí)內(nèi)存

    java-JVM內(nèi)存區(qū)域&JVM運(yùn)行時(shí)內(nèi)存

    JVM 內(nèi)存區(qū)域主要分為線程私有區(qū)域【程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法區(qū)】、線程共享區(qū)域【JAVA 堆、方法區(qū)】、直接內(nèi)存。 線程私有數(shù)據(jù)區(qū)域生命周期與線程相同, 依賴用戶線程的啟動(dòng)/結(jié)束 而 創(chuàng)建/銷(xiāo)毀(在 HotspotVM 內(nèi), 每個(gè)線程都與操作系統(tǒng)的本地線程直接映射, 因此這部

    2024年02月12日
    瀏覽(20)
  • Java虛擬機(jī)快速入門(mén) | JVM引言、JVM內(nèi)存結(jié)構(gòu)、直接內(nèi)存

    Java虛擬機(jī)快速入門(mén) | JVM引言、JVM內(nèi)存結(jié)構(gòu)、直接內(nèi)存

    目錄 一:JVM引言 1. 什么是 JVM ? 2. 常見(jiàn)的 JVM 3. 學(xué)習(xí)路線 二:JVM內(nèi)存結(jié)構(gòu) 1. 程 序 計(jì) 數(shù) 器(PC Register) 2. 虛 擬 機(jī) 棧(JVM Stacks) 3. 本 地 方 法 棧(Native Method Stacks) 4. 堆(Heap) 5. 方 法 區(qū)(Method Area) 三:直接內(nèi)存 tips: 首先給大家推薦兩款好用的免費(fèi)軟件:動(dòng)圖抓取軟

    2024年02月05日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包