【问题标题】:Docker and ram usageDocker 和 ram 的使用
【发布时间】:2018-12-28 08:55:05
【问题描述】:

我有一个 swarm 集群,每个节点上都有 24Gb 的 RAM。

Free -g 显示已使用 6Gb,但在某些 java 或 elasticsearch 容器上出现一些 OutMemory 错误。

              total        used        free      shared  buff/cache   available

Mem:             23           6           6           0          10          16

Swap:             1           0           1

我删除了对容器的所有保留或限制

知道是什么原因导致 OutOfMermory 吗?我确实在容器上设置了 Xmx,但它们并没有使用太多 RAM...

非常感谢

【问题讨论】:

  • 是JVM还是操作系统认为内存不足?
  • JVM,操作系统看起来不错
  • 较新版本的 Java 在决定包括内存在内的默认 JVM 值时会尊重 docker 环境。
  • 我已经能够对 java 进行限制并且它起作用了。我最大的问题是只使用了 25% 的 RAM,但仍然出现 OutOfMemory 错误。
  • 如果 JVM 出现内存不足异常,则为 JVM 分配更多 RAM。

标签: java docker ram swarm


【解决方案1】:

我发现了问题。

这是 sysctl.conf 中的内核配置。

我有这个:

cat /etc/sysctl.conf |grep vm.
vm.swappiness=10
vm.overcommit_memory=2
vm.dirty_ratio=2
vm.dirty_background_ratio=1

我删除了为 DB2 设置的所有内容(放回默认配置),现在我可以利用主机的所有 RAM。

我保留了这个:

cat /etc/sysctl.conf |grep vm.
vm.swappiness=10
vm.max_map_count=262144

谢谢

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 2022-11-26
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多