網站首頁 編程語言 正文
前言
最近在學習公司開發的平臺業務,需要將應用部署一遍。我自己電腦內存為16g,開了一臺8g內存的centos虛擬機。大部分服務都是部署在docker容器內的,在docker容器部署pulsar的時候竟然發現啟動命令沒有內存限制,百度了一圈也沒找到可以在哪里添加內存限制。只好硬著頭皮啟動服務,結果電腦那叫一個卡呀,8g的內存占的滿滿當當的。使用top查看內存占用,發現pulsar服務占用了兩三個g的內存,而且別的應用因為內存不夠停掉之后,pulsar還會把剩余的內存給占用掉,這nm不是無底洞嗎。于是我想了各種辦法限制pulsar服務的內存占用。
1.docker內存限制的兩種方式
docker內存限制有兩種方式:
- 創建容器時添加-m參數,單位可以是b,k,m,g
- 如果已經存在容器,修改該容器的hostconfig.json文件
2.方式一:-m參數限制
創建容器時我們可以添加-m參數限制容器的內存占用。單位是b,k,m,b
例如:
docker run -dit --name test -m 400m -p 3306:3306 mysql #創建mysql的鏡像實例,并限制容器占用內存大小為400m
3.方式二:修改hostconfig.json文件限制
hostconfig.hson
文件是容器的配置文件,每一個容器都有一個對應的 hostconfig.json
配置文件,我們在創建容器時使用的任何參數,都可以在這里配置,功能十分的強勁
1.查找容器對應的hostconfig.json文件
docker ps #找到要修改的容器id,記住它,后面要根據這個id找文件夾 find / -name hostconfig.json #全局搜索hostconfig.json文件,文件的最后一級目錄就是容器id
通過上面的命令,就可以找到容器對應的hostconfig.json文件了。
2.停止docker
在修改hostconfig.json
文件前,必須要停止docker,否則修改無效
systemctl stop docker
3.修改hostconfig.json文件
通過vi命令修改配置文件,
找到Memory
這一項,修改內存大小。請注意:這里的單位默認為bit。最小內存限制為4m,也就是,4x1024x1024。我這里修改為700mb,也就是700x1024x1024。
修改完成之后保存退出。
4.啟動docker
systemctl start docker
5.大功告成,完結撒花
補充:docker 運行指定內存
-m,--memory 內存限制,格式是數字加單位,單位可以為 b,k,m,g。最小為 4M --memory-swap 內存+交換分區大小總限制。格式同上。必須必-m設置的大 --memory-reservation 內存的軟性限制。格式同上 --oom-kill-disable 是否阻止 OOM killer 殺死容器,默認沒設置 --oom-score-adj 容器被 OOM killer 殺死的優先級,范圍是[-1000, 1000],默認為 0 --memory-swappiness 用于設置容器的虛擬內存控制行為。值為 0~100 之間的整數 --kernel-memory 核心內存限制。格式同上,最小為 4M
查看事例:
[root@sannian ~]# docker run -d -m 1G --memory-swap 3G -p 9999:80 --restart=always --name gitlab twang2218/gitlab-ce-zh a3254078a79a084f3f3bed5f4ade3e26c7d86951cd822d95b113227d75b00097
[root@sannian ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a3254078a79a twang2218/gitlab-ce-zh "/assets/wrapper" 21 minutes ago Up 2 minutes (healthy) 22/tcp, 443/tcp, 0.0.0.0:9999->80/tcp gitlab
[root@sannian ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE twang2218/gitlab-ce-zh latest 18da462b5ff5 3 months ago 1.61GB registry-vpc.cn-hangzhou.aliyuncs.com/wenty/jumpserver latest 055f42f305f5 7 months ago 1.41GB registry.cn-hangzhou.aliyuncs.com/wenty/jumpserver latest 055f42f305f5 7 months ago 1.41GB registry.jumpserver.org/public/jumpserver 1.0.0 055f42f305f5 7 months ago 1.41GB registry.jumpserver.org/public/jumpserver latest 055f42f305f5 7 months ago 1.41GB
總結
原文鏈接:https://blog.csdn.net/weixin_45019986/article/details/123844887
相關推薦
- 2022-12-28 jQuery如何設置背景顏色_jquery
- 2022-11-26 Python反向傳播實現線性回歸步驟詳細講解_python
- 2022-10-11 主從同步中斷(sql_thread)問題一例
- 2022-10-20 Swift協議Protocol介紹_Swift
- 2021-12-16 Docker快速部署SpringBoot項目介紹_docker
- 2023-07-07 Minio提示:io.minio.errors.InvalidResponseException:
- 2022-07-19 C++調用Matplotlibcpp進行畫圖
- 2022-12-05 C++?Boost?Heap使用實例詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支