亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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設置多大合適

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

java程序啟動的時候需要哪些方面的內存呢?

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

如何大體估算java進程使用的內存呢?

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

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

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

所以建議xmx與xms設置一樣大

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

2、xmn或者maxnewSize設置

xmn設置年輕代大小。

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

3、當xmx設置大于4G時

設置垃圾回收器 -XX:+UseG1GC

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

4、容器中最好增加-XX:ParallelGCThreads設置

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

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

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

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

綜上所述:

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

總結

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

相關文章

  • 使用Distroless提高容器安全

    使用Distroless提高容器安全

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

    Docker的進程和Cgroup概念詳解

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

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

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

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

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

    Docker部署Node.js的方法步驟

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

    使用docker制作分布式lnmp 鏡像

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

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

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

    Docker安裝運行SRS的過程記錄

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

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

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

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

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

最新評論