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

k8s之容器內(nèi)存與JVM內(nèi)存解讀

 更新時(shí)間:2025年07月04日 09:20:31   作者:傅里葉、  
這篇文章主要介紹了k8s之容器內(nèi)存與JVM內(nèi)存,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

容器內(nèi)的 Java 應(yīng)用可能會(huì)發(fā)生兩種類型的 OOM 異常,

  • JVM 的 OOMJVM 的堆棧元空間等內(nèi)存泄漏,導(dǎo)致沒(méi)有足夠的內(nèi)存來(lái)為對(duì)象分配空間并且GC也沒(méi)有空間可回收時(shí),這時(shí)JVM會(huì)主動(dòng)拋出錯(cuò)誤并退出進(jìn)程,并留下相應(yīng)的錯(cuò)誤記錄。容器退出狀態(tài)為exit code 137 reason: error(137表示容器收到SIGKILL信號(hào)而失敗,通常是達(dá)到資源限制或探針失敗
  • 容器 OOM一般是JVM參數(shù)設(shè)置不合理,導(dǎo)致container_memory_working_set_bytes達(dá)到了cgroups限制,會(huì)在k8s事件中記錄且容器退出狀態(tài)為exit code 137 reason: OOM Killed

從容器來(lái)看

container_memory_working_set_bytes代表容器真實(shí)使用的內(nèi)存量,也是判斷超過(guò)limit的限制,超過(guò)limit則會(huì)導(dǎo)致oom;

container_memory_working_set_bytes = container_memory_usage_bytes - total_inactive_file(不活躍緩沖頁(yè));

container_memory_usage_bytes = container_memory_rss(進(jìn)程實(shí)際使用的物理內(nèi)存)+container_memory_cache(頁(yè)面緩存)+kernel memory;

container_memory_cache = total_active_file + inactive_file;

從jvm來(lái)看

進(jìn)程實(shí)際使用的物理內(nèi)存container_memory_rss = JVM內(nèi)存(堆棧元空間)+直接內(nèi)存+其他(文件描述符、GC消耗等等);

容器真實(shí)使用的內(nèi)存量container_memory_working_set_bytes = JVM內(nèi)存(堆棧元空間)+直接內(nèi)存+其他(文件描述符、GC消耗等等)+container_memory_cache(頁(yè)面緩存)+kernel memory;

而預(yù)留內(nèi)存又=直接內(nèi)存+其他(文件描述符、GC消耗等等)+container_memory_cache(頁(yè)面緩存)+kernel memory;

綜上,容器真實(shí)使用的內(nèi)存為 JVM內(nèi)存(堆棧元空間)+ 預(yù)留內(nèi)存(直接內(nèi)存+文件描述符、GC消耗等 + 活躍的緩存頁(yè) + kernel memory)

一種解決 JVM 內(nèi)存超限的方法

可以讓 JVM 自動(dòng)感知 docker 容器的 cgroup 限制,從而動(dòng)態(tài)的調(diào)整堆內(nèi)存大小。JDK8u131 在 JDK9 中有一個(gè)很好的特性,即 JVM 能夠檢測(cè)在 Docker 容器中運(yùn)行時(shí)有多少內(nèi)存可用。

為了使 jvm 保留根據(jù)容器規(guī)范的內(nèi)存,必須設(shè)置標(biāo)志 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap。

注意:

如果將這兩個(gè)標(biāo)志與 Xms 和 Xmx 標(biāo)志一起設(shè)置,那么 jvm 的行為將是什么?

-Xmx 標(biāo)志將覆蓋-XX:+ UseCGroupMemoryLimitForHeap 標(biāo)志。

MaxDirectMemorySize

-XX:MaxDirectMemorySize=size用于設(shè)置New I/O(java.nio) direct-buffer allocations的峰值,-XX:MaxDirectMemorySize 沒(méi)顯式配置的時(shí)候,NIO direct memory 可申請(qǐng)的空間的上限就是 -Xmx 減去一個(gè) survivor space 的預(yù)留大小。

如果不配置 -XX:MaxDirectMemorySize 并配置 -Xmx5G,則 默認(rèn) MaxDirectMemorySize 也將是 5G-survivor space 區(qū),并且應(yīng)用程序的總堆+直接內(nèi)存使用量可能會(huì)增長(zhǎng)到 5G + 5G = 10 G

總結(jié)

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

相關(guān)文章

  • k8s集群部署過(guò)程

    k8s集群部署過(guò)程

    本文詳細(xì)介紹了如何部署Kubernetes集群,包括安裝Docker、配置阿里云YUM軟件源、安裝kubeadm、kubelet和kubectl,以及部署Kubernetes、安裝Pod網(wǎng)絡(luò)插件和將節(jié)點(diǎn)加入集群的過(guò)程,感興趣的朋友一起看看吧
    2025-03-03
  • k8s無(wú)法刪除pv,pvc的問(wèn)題及解決

    k8s無(wú)法刪除pv,pvc的問(wèn)題及解決

    在Kubernetes中刪除PVC時(shí),若未指定名稱或使用錯(cuò)誤參數(shù),會(huì)報(bào)錯(cuò)"no name was specified",解決方法為:使用`kubectl delete pvc <pvc-name>`明確指定PVC名稱,或通過(guò)`kubectl delete pvc --all`刪除所有PVC,同時(shí)確保正確指定命名空間(-n)
    2025-09-09
  • ragflow?k8s部署過(guò)程圖文詳解

    ragflow?k8s部署過(guò)程圖文詳解

    這篇文章主要介紹了ragflow?k8s部署詳細(xì)過(guò)程,本文將使用ragflow-0.18.0,來(lái)進(jìn)行演示詳細(xì)部署過(guò)程,需要的朋友可以參考下
    2025-04-04
  • kubernetes?volume數(shù)據(jù)存儲(chǔ)的使用解讀

    kubernetes?volume數(shù)據(jù)存儲(chǔ)的使用解讀

    文章介紹了Kubernetes中容器的生命周期、持久化存儲(chǔ)的實(shí)現(xiàn)方式,以及常見(jiàn)的存儲(chǔ)卷類型,包括EmptyDir、HostPath、NFS、PV、PVC、ConfigMap和Secret等,通過(guò)這些存儲(chǔ)卷和配置,可以實(shí)現(xiàn)Pod中容器之間的數(shù)據(jù)共享、持久化存儲(chǔ)以及敏感信息的管理
    2025-12-12
  • K8s?EphemeralContainer臨時(shí)容器解讀

    K8s?EphemeralContainer臨時(shí)容器解讀

    Kubernetes臨時(shí)容器用于調(diào)試無(wú)shell容器,通過(guò)shareProcessNamespace參數(shù)實(shí)現(xiàn)安全登錄與故障排查,排查后可刪除,版本1.25及以上默認(rèn)啟用,需使用預(yù)裝debug工具的鏡像(如busybox)
    2025-08-08
  • k8s安裝calico時(shí)如何選擇網(wǎng)卡問(wèn)題

    k8s安裝calico時(shí)如何選擇網(wǎng)卡問(wèn)題

    這篇文章主要介紹了k8s安裝calico時(shí)如何選擇網(wǎng)卡問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • K8S中設(shè)置JVM堆棧大小實(shí)現(xiàn)方式

    K8S中設(shè)置JVM堆棧大小實(shí)現(xiàn)方式

    這篇文章主要介紹了K8S中設(shè)置JVM堆棧大小實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • 一文解析Kubernetes使用PVC后數(shù)據(jù)丟失

    一文解析Kubernetes使用PVC后數(shù)據(jù)丟失

    這篇文章主要為大家介紹了Kubernetes使用PVC后數(shù)據(jù)丟失原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • K8S Pod定向部署到指定節(jié)點(diǎn)的實(shí)現(xiàn)全過(guò)程

    K8S Pod定向部署到指定節(jié)點(diǎn)的實(shí)現(xiàn)全過(guò)程

    K8S Pod定向部署通過(guò)節(jié)點(diǎn)標(biāo)簽、親和性和污點(diǎn)三種機(jī)制實(shí)現(xiàn)資源適配、業(yè)務(wù)隔離與節(jié)點(diǎn)專屬化,適用于不同場(chǎng)景,選型建議為標(biāo)簽用于基礎(chǔ)、親和性用于彈性、污點(diǎn)用于資源保護(hù)
    2025-08-08
  • k8s kubeadm部署實(shí)踐

    k8s kubeadm部署實(shí)踐

    文章總結(jié)了部署Kubernetes集群的準(zhǔn)備工作及關(guān)鍵步驟:關(guān)閉防火墻、禁用SELinux/swap、配置免密登陸、開(kāi)啟iptables轉(zhuǎn)發(fā),部署Docker和K8s,解決cgroup驅(qū)動(dòng)問(wèn)題,安裝Calico網(wǎng)絡(luò)插件,最終使集群節(jié)點(diǎn)狀態(tài)變?yōu)镽eady
    2025-09-09

最新評(píng)論

水富县| 额济纳旗| 彩票| 来宾市| 高雄县| 师宗县| 乌审旗| 定远县| 英德市| 河西区| 突泉县| 鹿泉市| 苗栗市| 神池县| 蒲城县| 松桃| 丰镇市| 疏附县| 通化县| 固阳县| 铜川市| 饶阳县| 万荣县| 合山市| 陈巴尔虎旗| 三门峡市| 浦东新区| 黔西县| 扎兰屯市| 信宜市| 云霄县| 江孜县| 沁阳市| 金昌市| 涪陵区| 湟中县| 山阴县| 卢湾区| 北碚区| 东光县| 金华市|