欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker生產(chǎn)環(huán)境jvm性能優(yōu)化方式

 更新時間:2023年08月28日 10:40:05   作者:lipengxs  
這篇文章主要介紹了docker生產(chǎn)環(huán)境jvm性能優(yōu)化方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

docker生產(chǎn)環(huán)境jvm性能優(yōu)化

1、xmx與xms設(shè)置多大合適

docker獲得的mem_usage的大小是從外部得到的java進(jìn)程的內(nèi)存大小,不僅僅是 -Xmx設(shè)置的大小,如果 -Xmx和docker分配的內(nèi)存一致的話,由于java應(yīng)用其他的地方還要占用不少的內(nèi)存,導(dǎo)致還沒有到達(dá) -Xmx的時候就沒有可以用的內(nèi)存了,所以被docker容器給干掉了,從而出現(xiàn)了oom的情況。

java程序啟動的時候需要哪些方面的內(nèi)存呢?

  • java程序的堆內(nèi)存,最大就是 -Xmx設(shè)置的這個值
  • Garbage collection在垃圾回收的時候使用的內(nèi)存
  • JIT optimization使用的內(nèi)存
  • java程序的Off-heap所使用的內(nèi)存
  • java程序的Metaspace所使用的內(nèi)存
  • JNI Code所占用的內(nèi)存
  • jvm啟動的時候所占用的內(nèi)存。

如何大體估算java進(jìn)程使用的內(nèi)存呢?

Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]

猜測在設(shè)置jvm啟動參數(shù)的時候 -Xmx的這個值一般要小于docker限制內(nèi)存數(shù),經(jīng)過生產(chǎn)環(huán)境實驗 -Xmx:docker的比例為 2/3 - 3/4,

一般生產(chǎn)環(huán)境都是用的sunjdk

所以建議xmx與xms設(shè)置一樣大

  • 避免JVM在運行過程中向OS申請內(nèi)存
  • 延后啟動后首次GC的發(fā)生時機(jī)
  • 減少啟動初期的GC次數(shù)
  • 避免動態(tài)調(diào)整jvm堆大小

2、xmn或者maxnewSize設(shè)置

xmn設(shè)置年輕代大小。

如果只是一些業(yè)務(wù)較簡單的基礎(chǔ)服務(wù)建議xmn設(shè)置為xmx的一半。

3、當(dāng)xmx設(shè)置大于4G時

設(shè)置垃圾回收器 -XX:+UseG1GC

當(dāng)堆內(nèi)存很大時如果還是使用并發(fā)收集器,會造成gc收集比較長,這時可以將并行收集改成G1回收器

4、容器中最好增加-XX:ParallelGCThreads設(shè)置

該值可以設(shè)置為cpu核數(shù)

由于ParallelGCThreads的值默認(rèn)是等于cpu核數(shù),但是有的生產(chǎn)環(huán)境獲取的是容器宿主機(jī)器的cpu核數(shù),這就導(dǎo)致cpu核數(shù)太多,效率變差,gc時間會延長。

jvm docker支持啟動參數(shù)

  • XX:+UseContainerSupport:啟用容器支持,JVM 將自動檢測并使用容器特定的內(nèi)存限制。
  • -XX:InitialRAMPercentage=68:JVM 初始堆大小為主機(jī)可用內(nèi)存的百分之68。
  • -XX:MaxRAMPercentage=68:JVM 最大堆大小為主機(jī)可用內(nèi)存的百分之68。
  • -XX:+UseG1GC:開啟 G1 垃圾回收器。
  • -XX:+UnlockExperimentalVMOptions:解鎖實驗性 VM 選項,以便使用實驗性功能。
  • -XX:G1NewSizePercent=60:設(shè)置新生代大小占堆大小的比例為60%。
  • -XX:ParallelGCThreads=11:設(shè)置并行 GC 線程數(shù)為11。
  • -XX:ConcGCThreads=4:設(shè)置并發(fā) GC 線程數(shù)為4。
  • -XX:MaxGCPauseMillis=160:設(shè)置最大 GC 暫停時間為160毫秒。
  • -XX:MetaspaceSize=120m:設(shè)置元空間初始大小為120MB。
  • -XX:MaxMetaspaceSize=350m:設(shè)置元空間最大大小為350MB。
  • -XX:MaxDirectMemorySize=300m:設(shè)置直接內(nèi)存最大大小為300MB。
  • -XX:+HeapDumpOnOutOfMemoryError:在內(nèi)存溢出時生成堆轉(zhuǎn)儲文件。
  • -Dio.netty.eventLoopThreads=6:設(shè)置 Netty EventLoop 線程數(shù)為6。
  • -Dio.netty.tryReflectionSetAccessible=true:允許 Netty 反射調(diào)用私有方法。
  • -Dlog4j2.formatMsgNoLookups=true:關(guān)閉 Log4j2 參數(shù)查找。
  • -Dspring.profiles.active=sandbox:啟用 Spring Boot 的沙盒配置文件。
  • –add-exports=java.base/jdk.internal.misc=ALL-UNNAMED:導(dǎo)出指定的包以供未命名模塊使用。
  • -jar:指定 JAR 包的路徑和名稱。

綜上所述:

這些啟動參數(shù)可以優(yōu)化 JVM 的內(nèi)存管理、垃圾回收、線程處理等方面的性能,提高應(yīng)用程序的穩(wěn)定性和響應(yīng)速度。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Distroless提高容器安全

    使用Distroless提高容器安全

    這篇文章主要為大家介紹了使用Distroless提高容器安全,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Docker的進(jìn)程和Cgroup概念詳解

    Docker的進(jìn)程和Cgroup概念詳解

    文章主要介紹了容器內(nèi)的進(jìn)程組織和關(guān)系,包括containerd-shim和容器內(nèi)1號進(jìn)程的角色和特點,以及信號處理機(jī)制,同時,文章還討論了Cgroup在Linux系統(tǒng)中用于資源管理和控制的機(jī)制,包括CFS調(diào)度算法和Kubernetes中的資源管理,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • Docker容器動態(tài)加載掛載目錄的實踐

    Docker容器動態(tài)加載掛載目錄的實踐

    本文主要介紹了Docker容器中動態(tài)加載掛載目錄的實踐,通過掛載目錄,可以將主機(jī)上的文件或目錄與容器中的文件或目錄進(jìn)行關(guān)聯(lián),實現(xiàn)應(yīng)用程序的靈活性和可擴(kuò)展性,這種方法可以避免容器重啟,減少應(yīng)用程序的停機(jī)時間,并簡化應(yīng)用程序的部署和管理,使應(yīng)用程序的遷移和擴(kuò)展更加容易
    2024-10-10
  • docker入門教程(利用docker部署web應(yīng)用)

    docker入門教程(利用docker部署web應(yīng)用)

    docker是一個用來裝應(yīng)用的容器,就像杯子可以裝水,筆筒可以放筆,書包可以放書,可以把hello word放在docker中,可以把網(wǎng)站放入docker中,可以把任何想得到的程序放在docker中,這篇文章主要介紹了docker入門(利用docker部署web應(yīng)用),需要的朋友可以參考下
    2023-02-02
  • Docker部署Node.js的方法步驟

    Docker部署Node.js的方法步驟

    這篇文章主要介紹了Docker部署Node.js的方法步驟。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 使用docker制作分布式lnmp 鏡像

    使用docker制作分布式lnmp 鏡像

    最近在學(xué)習(xí)docker相關(guān)知識,順便把docker制作分布式lnmp 鏡像的過程分享給大家,包括Nginx配置文件和PHP文件的修改代碼也一并給出,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • docker安裝tomcat并部署Springboot項目war包的方法

    docker安裝tomcat并部署Springboot項目war包的方法

    這篇文章主要介紹了docker安裝tomcat并部署Springboot項目war包的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Docker安裝運行SRS的過程記錄

    Docker安裝運行SRS的過程記錄

    SRS定位是運營級的互聯(lián)網(wǎng)直播服務(wù)器集群,追求更好的概念完整性和最簡單實現(xiàn)的代碼,本文給大家介紹下Docker安裝運行SRS的過程,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • Dockerfile中multi-stage(多階段構(gòu)建)詳解

    Dockerfile中multi-stage(多階段構(gòu)建)詳解

    在2017年5月3日即將發(fā)行的 Docker 17.05.0-ce 中,Docker 官方提供了簡便的多階段構(gòu)建 (multi-stage build) 方案,下面這篇文章主要給大家介紹了關(guān)于Dockerfile中multi-stage(多階段構(gòu)建)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Docker容器compose容器集群的快速編排方式

    Docker容器compose容器集群的快速編排方式

    這篇文章主要介紹了Docker容器compose容器集群的快速編排方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論