k8s容器的內(nèi)存設(shè)置的踩坑記錄
問題場(chǎng)景
通過k8s啟動(dòng)了一個(gè)容器,容器中運(yùn)行了一個(gè)java應(yīng)用及日志跟蹤服務(wù),在運(yùn)行過程中發(fā)現(xiàn)容器經(jīng)常重啟,重啟的原因?yàn)椋篶group out of memory。
運(yùn)行指標(biāo)
k8s容器內(nèi)存限制:4G;jvm最大內(nèi)存設(shè)置:3.2G。
問題分析
1) jvm內(nèi)存溢出了;
2) 容器內(nèi)存溢出了。
過程跟蹤
1) 通過跟蹤jvm內(nèi)存的占用情況,模擬應(yīng)用請(qǐng)求,發(fā)現(xiàn)在容器被killed時(shí),jvm內(nèi)存正常。
2) 查看容器運(yùn)行的宿主服務(wù)器日志,/var/log/message,查看結(jié)束條件。 初步分析,容器內(nèi)存確實(shí)超出最大內(nèi)存限制:4G。如下圖。
3)初步分析,在容器被killed時(shí),jvm是運(yùn)行正常的,而容器運(yùn)行需要的其他內(nèi)存空間不夠,導(dǎo)致容器整體內(nèi)存占用大于4G;linux系統(tǒng)基于內(nèi)存占用評(píng)分機(jī)制,找出占用內(nèi)存使用最大的進(jìn)程,將進(jìn)行殺掉了;容器被刪掉后,k8s通過調(diào)度重新啟動(dòng)了容器實(shí)例。
如何設(shè)置容器的總內(nèi)存大小呢?
容器的總內(nèi)存 = 應(yīng)用程序內(nèi)存 + 容器服務(wù)內(nèi)存。對(duì)于java程序,jvm內(nèi)存大小,可以通過jvm調(diào)參和jvm監(jiān)控,尋找最合適的內(nèi)存大小參數(shù);對(duì)于容器服務(wù)內(nèi)存,可以基于k8s的彈性機(jī)制進(jìn)行設(shè)置,大小可默認(rèn)為應(yīng)用程序內(nèi)存的1/2。
1) jvm內(nèi)存大小調(diào)試,對(duì)于后臺(tái)管理或后臺(tái)任務(wù)調(diào)度類,jvm內(nèi)存溢出場(chǎng)景參數(shù)為:jvm老年代內(nèi)存占滿,并且垃圾回收次數(shù)不斷增加,CPU占用率幾乎100%。
JVM內(nèi)存參數(shù)建議還是使用-Xms、-Xmx進(jìn)行設(shè)置,不建議使用-XX:MaxRAMPercentage -XX:InitialRAMPercentage -XX:MinRAMPercentage設(shè)置。因?yàn)?Xms、-Xmx是基于應(yīng)用程序功能調(diào)優(yōu)后的值,如果根據(jù)容器內(nèi)存大小隨意變更,效果可能適得其反。
2) 容器服務(wù)內(nèi)存可以在保證應(yīng)用程序正常運(yùn)行的情況下,根據(jù)實(shí)際情況調(diào)整。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Podman開機(jī)自啟容器實(shí)現(xiàn)過程及與Docker對(duì)比
這篇文章主要為大家介紹了Podman開機(jī)自啟容器實(shí)現(xiàn)過程,通過示例代碼的形式進(jìn)行演繹過程,有需要的朋友可以參考下,希望可以有所幫助2021-09-09關(guān)于CentOS7日志文件及journalctl日志查看方法
這篇文章主要介紹了關(guān)于CentOS7日志文件及journalctl日志查看方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置
這篇文章主要介紹了CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10K8s學(xué)習(xí)之Pod的定義及詳細(xì)資源調(diào)用案例
Kubernetes將所有內(nèi)容抽象為資源,通過操作資源管理集群,核心單元是Pod,通過控制器管理Pod,資源管理分為命令式對(duì)象管理、命令式對(duì)象配置和聲明式對(duì)象配置,各有適用場(chǎng)景,需要的朋友可以參考下2024-09-09基于云服務(wù)MRS構(gòu)建DolphinScheduler2調(diào)度系統(tǒng)的案例詳解
這篇文章主要介紹了基于云服務(wù)MRS構(gòu)建DolphinScheduler2調(diào)度系統(tǒng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05