最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker 查看jvm內(nèi)存占用方式

 更新時間:2021年03月19日 09:59:24   作者:yzh_1346983557  
這篇文章主要介紹了docker 查看jvm內(nèi)存占用方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、進入docker容器的宿主機,查看運行指定鏡像的容器id(結(jié)果的第一列):

docker ps | grep myImageName(或docker ps | grep java)

二、進入容器內(nèi)部:

docker exec -it containerId sh

三、直接輸入top命令:

top

可看到基本的容器占用的信息:pid、vsz、cpu、command等。(ctrl+c 或 q,退出top)

四、查看更具體的jvm內(nèi)存占用:

top -m 

其中,vsz:Virtual Memory Size,虛擬內(nèi)存大小,表明了該進程可以訪問的所有內(nèi)存,包括被交換的內(nèi)存和共享庫內(nèi)存。

rss: Resident Set Size,常駐內(nèi)存集合大小,表示進程在RAM中占用了多少內(nèi)存,并不包含在SWAP中占用的虛擬內(nèi)存。即使是在內(nèi)存中的使用了共享庫的內(nèi)存大小也一并計算在內(nèi),包含了完整的在stack和heap中的內(nèi)存。

SHR:shared memory,共享內(nèi)存。

補充:

ps -ef | grep java 或 docker top 容器id ,可查看pid的一些信息。

ps aux | grep java。

top -p pid。

RSS 是常駐內(nèi)存集(Resident Set Size),表示該進程分配的內(nèi)存大小。

RSS 不包括進入交換分區(qū)的內(nèi)存。

RSS 包括共享庫占用的內(nèi)存(只要共享庫在內(nèi)存中)

RSS 包括所有分配的棧內(nèi)存和堆內(nèi)存。

VSZ 表示進程分配的虛擬內(nèi)存。

VSZ 包括進程可以訪問的所有內(nèi)存,包括進入交換分區(qū)的內(nèi)容,以及共享庫占用的內(nèi)存。

VSZRW:未百度到具體含義,猜測:初始申請的虛擬內(nèi)存大小。

docker stats 容器名 或 docker stats 容器id,結(jié)果如下:

CONTAINER      CPU %        MEM USAGE / LIMIT     MEM %        NET I/O   BLOCK I/O    PIDS
 

補充:docker容器化下的JVM參數(shù)調(diào)優(yōu)

1、JVM堆內(nèi)存設置

跑在docker容器的Java服務發(fā)生過幾次內(nèi)存超標異常,實際上這和Java程序的docker容器化有很大的關系。Java和docker并不是天然的朋友,docker可以設置內(nèi)存和CPU限制,底層通過Linux cgroup技術實現(xiàn),但是Java JVM并不能自動檢測到。

我們可以使用Java的Xmx標識手動指定堆內(nèi)存的大小或者使用較高版本的JDK提供的JVM標識,解決這個問題。

問題:

舊版本Java8(update 131之前的版本),JVM的可用內(nèi)存和CPU數(shù)量并不是docker允許你使用的可用內(nèi)存和CPU數(shù)量

比如docker容器中限制只能使用1G,但是舊版本Java并不能識別到這個限制,當業(yè)務增長時,JVM就會申請更多內(nèi)存,可能遠超這個限制。但是如果使用太多內(nèi)存,docker就會采取行動并殺死容器內(nèi)的Java進程,顯然這不是我們想要的!

目前我們生產(chǎn)環(huán)境使用Java8版本,這個問題可通過-Xmx限制堆內(nèi)存大小來解決,不過這里實際限制了兩次,一次是docker容器的內(nèi)存限制,一次是jvm堆內(nèi)存的限制。

解決方法:

這個前提需要Java程序的dockerfile支持:

# 初始鏡像
FROM adoptopenjdk/openjdk8
# jar包名字需要更改為項目名字-版本號,后面app.jar 不變
ADD example-sun-1.0.jar app.jar
# 配置JVM啟動參數(shù)
ENV JVM_ARGS=${JVM_ARGS}
EXPOSE 8080
# 優(yōu)化jvm參數(shù)配置啟動
ENTRYPOINT java ${JVM_ARGS} -Djava.security.egd=file:/dev/./urandom -jar app.jar

具體在k8s deployment.yaml 部署文件中環(huán)境變量 env 中加入以下參數(shù),當JVM 啟動時就會加載進去

- name: JVM_ARGS
 value: -Xmx1024m -Xms512m

Xmx1024m #設置jvm堆內(nèi)存的最大值

-Xms512m #設置jvm堆內(nèi)存的最小值

這里設置最小堆內(nèi)存為512m,最大內(nèi)存為1024m, 堆內(nèi)存調(diào)整不要一味簡單增大,要仔細分析內(nèi)存占用過大的原因,是否有代碼上的問題。

較高版本Java9之后(8u131+)JVM提供更好的解決方式

使用JVM 標志: -XX:+UnlockExperimentalVMOptions-XX:+UseCGroupMemoryLimitForHeap

強制JVM檢查Linux的cgoup配置,實際上docker正是通過Linux的cgroup技術來限制容器的內(nèi)存等資源的?,F(xiàn)在如果應用達到了docker設置的限制(比如1G),JVM是可以看到這個限制的,JVM就會嘗試GC操作。

如果gc之后仍然超過內(nèi)存限制,那JVM就會做它該做的事情,比如拋出OutOfMemoryException.也就是說,JVM能夠識別到docker的這些設置。

2、GC日志打印以及OOM自動dump

程序運行過程中,也可以打印GC日志,方便排查問題, 同時當Java發(fā)生OutOfMemory 異常時可將heap 內(nèi)存 dump 下來方便我們排查問題使用,設置以下參數(shù):

- name: JVM_ARGS
 value: -Xmx1536m -Xms512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/my-heap-dump.hprof -Xloggc:/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps

參數(shù)含義:

# 發(fā)生內(nèi)存溢出自動dump內(nèi)存文件
-XX:+HeapDumpOnOutOfMemoryError
############ 指定dump文件地址為服務打印日志文件夾/logs(已掛載)
-XX:HeapDumpPath=/logs/my-heap-dump.hprof
############ 打印服務gc日志
-Xloggc:/logs/gc.log
# 輸出詳細GC日志
-XX:+PrintGCDetails
# 格式化輸出時間戳 2020-09-17T19:45:05.680+0800
-XX:+PrintGCDateStamps

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • docker daemon遠程連接設置詳解

    docker daemon遠程連接設置詳解

    本篇文章主要介紹了docker daemon遠程連接設置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • docker pure-ftp 搭建ftp服務器的方法

    docker pure-ftp 搭建ftp服務器的方法

    本篇文章主要介紹了docker pure-ftp 搭建ftp服務器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • CentOS7.3中Docker的安裝教程

    CentOS7.3中Docker的安裝教程

    Docker 是一個開源的應用容器引擎,基于Go語言并遵從Apache2.0協(xié)議開源。這篇文章主要給大家介紹CentOS7.3中Docker的安裝教程,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2017-04-04
  • docker 使用GPU的過程詳解

    docker 使用GPU的過程詳解

    本文以TensorFlow2.0為例給大家介紹docker 使用GPU的過程詳解,文中給大家介紹了基于拉的tf-gpu鏡像構(gòu)建自己的鏡像的操作方法,啟動鏡像檢查GPU是否可用的相關知識,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Docker安裝Presto連接Hive的詳細過程

    Docker安裝Presto連接Hive的詳細過程

    這篇文章主要介紹了Docker安裝Presto連接Hive的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • docker部署rustdesk遠程控制服務器的實現(xiàn)

    docker部署rustdesk遠程控制服務器的實現(xiàn)

    RustDesk是一款體驗優(yōu)秀的遠程控制軟件,本文主要介紹了docker部署rustdesk遠程控制服務器的實現(xiàn),具有一定的參考價值,感興趣的可以了
    2024-05-05
  • CentOS 6.5 制作可以ssh登錄的Docker鏡像

    CentOS 6.5 制作可以ssh登錄的Docker鏡像

    這篇文章主要介紹了CentOS 6.5 制作可以ssh登錄的Docker鏡像,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • docker打包前端鏡像的超詳細步驟

    docker打包前端鏡像的超詳細步驟

    要打包前端項目可以使用 Docker 容器技術,下面這篇文章主要給大家介紹了關于docker打包前端鏡像的超詳細步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 手把手教你docker部署(使用docker-compose)教程

    手把手教你docker部署(使用docker-compose)教程

    使用 Docker Compose 可以輕松、高效的管理容器,下面這篇文章主要給大家介紹了關于手把手教你docker部署(使用docker-compose)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • docker+daocloud實現(xiàn)前端項目自動構(gòu)建部署

    docker+daocloud實現(xiàn)前端項目自動構(gòu)建部署

    這篇文章主要介紹了docker+daocloud實現(xiàn)前端項目自動構(gòu)建部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07

最新評論

呈贡县| 贺兰县| 乡宁县| 正定县| 阳城县| 和平区| 昌吉市| 武威市| 昌宁县| 舞阳县| 万安县| 稷山县| 渭源县| 竹溪县| 永安市| 古交市| 宁陕县| 百色市| 河南省| 彰化县| 洪江市| 沈阳市| 县级市| 定远县| 凤庆县| 长春市| 辰溪县| 观塘区| 缙云县| 杭锦旗| 昂仁县| 莱阳市| 上思县| 青海省| 宁南县| 彰武县| 郓城县| 大悟县| 沙湾县| 裕民县| 玉龙|