当前位置: 首页 > news >正文

docker排查OOM

思路:

1.先从代码程序上排查,线程池创建是否使用ThreadPoolExecutor,线程池各项设置是否合理。

任务对象是否释放,网关是否需要限流。

2.服务器内存大小,cpu使用率,存储空间大小,java程序启动类设置的参数,如MEM_XMX,MEM_XMS,MEM_XMN,-server -Xmx512m -Xms512m -Xmn256m -Xss256k等是否合理。


1.内存不足 (OOM Killer)

最常见原因:当容器内存超过限制或宿主机内存不足时,Linux 的 OOM Killer 会强制终止进程。
检查方法:

docker stats              # 查看容器资源使用情况
dmesg | grep -i kill      # 查看系统日志是否有OOM记录
journalctl -k | grep -i oom

解决方案:
优化应用内存使用(如调整 JVM 堆大小,如果是 Java 应用)
增加宿主机内存或减少其他容器资源占用


2. CPU 资源限制

如果容器 CPU 使用率持续 100%,可能被调度器终止
检查:

docker stats
top

增加 CPU 份额:docker run --cpu-shares=512 ...
限制 CPU 核心数:docker run --cpus=1.5 ...


3. 存储空间不足

磁盘写满会导致各种异常
检查:

df -h
docker system df

4. 应用自身崩溃

查看应用日志:

docker logs -f <container_name>

检查是否有未捕获的异常


5. 健康检查失败

如果配置了健康检查且失败,Docker 会重启容器
检查:

docker inspect <container_name> 

针对性建议
优先检查内存:



如果是 Java 应用:

确保设置了合理的 JVM 内存参数(如 -Xmx)
在docker-compose.yml中动态设置

6.内存不足

从 free -h 排查内存和Swap是否充足。
1. 启用 Swap 交换空间(必须做!)
# 创建 3GB Swap 文件(根据磁盘空间调整大小)

# 创建 3GB Swap 文件(根据磁盘空间调整大小)
sudo fallocate -l 3G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile# 永久生效(写入 /etc/fstab)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab# 验证
free -h  # 应显示 Swap > 0

7. 终极方案

升级服务器配置,升级到  4GB 或更高内存。

docker 相关命令

Docker 教程 | 菜鸟教程

http://www.dtcms.com/a/302806.html

相关文章:

  • 图——邻接表基本操作算法实现
  • 【SpringMVC】SpringMVC的概念、创建及相关配置
  • 对比分析 OceanBase 与数据库中间件
  • Java 数学工具类 Math
  • 6、CentOS 9 安装 Docker
  • 香港Web3媒体Techub News活动大事记:时间线全记录
  • 将 NI Ettus USRP X410 的文件系统恢复出厂设置
  • CMake简单教程
  • 智能指挥调度系统:数字化时代的协同决策中枢
  • 从0到1学PHP(一):PHP 基础入门:开启后端开发之旅
  • 基于 OpenCV 与 sklearn 的数字识别:KNN 算法实践
  • 【CDA干货】金融超市电商App经营数据分析案例
  • 星辰大海的征途:星宸科技的中国芯片突围战
  • 【行测】常识判断1
  • 【Unity笔记03】#if的用法和命名空间
  • EXCEL怎么提取表名
  • 在CentOS上以源码编译的方式安装PostgreSQL
  • 【51单片机2位数码管跑马灯】2022-9-25
  • 时间数字转换器TDC的FPGA方案及核心代码
  • 51单片机如何实现round函数
  • Java 大视界 -- 基于 Java 的大数据实时流处理在智能电网分布式能源接入与电网稳定性保障中的应用(368)
  • 【Linux】重生之从零开始学习运维之mysql用户管理
  • live-server的使用以及离线环境安装
  • CMake、CMakeLists.txt 基础语法
  • Linux系统之Ansible安装与入门
  • WPF,窗口拖动事件与窗口内控件点击事件
  • c++ 中的字符串相关的操作
  • python办自动化--利用vba或者python按需求读取excel文件指定列,更改列名后,按照要求将列排序,最后填充空白单元格
  • k8s中Nvidia节点驱动的配置问题
  • Go 语言-->指针