帮助理解 oom-killer 启动的根本原因

帮助理解 oom-killer 启动的根本原因

我正在运行 Ubuntu Server 20.04,它是完全最新的,配有 Raspberry Pi 4、4GB RAM(可能相关也可能不相关,但系统通过 USB3.0 端口使用 SSD 运行),作为一台能够运行一些 Docker 镜像的低功耗 PC。它运行 xfce4 显示魔镜,并通过 GPIO 端口重新收集一些数据(仅需几毫安电流):电源是原装 3A 电源适配器。

我遇到的问题是,今天它丢失了以太网连接,但 rpi 本身运行良好……直到我插入键盘,这时它就出现内核崩溃之类的情况。当时没有可用的日志记录来了解那里发生了什么。

当我查看日志时,以下内容引起了我的注意: https://pastebin.com/0VNDSUyL

当时,根据最新可用数据,内存使用率约为 90%(我运行 Telegraf 并将所有内容记录到在同一台机器上运行的 Influxdb 实例 [均使用 Docker])。

被终止的进程是 Java,但我不知道它是哪个 Docker 映像,因为运行时甚至没有安装在主机上。

  • 这是否表示我的 RAM 不足?我该怎么做才能避免将来再出现此问题?
  • 为什么当我还剩下大约 10% 的 RAM 时,OOM-killer 就开始启动了?这可以调整吗?
  • 为什么它会切断我的以太网连接?它是否导致系统处于不稳定状态?
  • 是否是某些与硬件相关的因素导致了此问题?

我不知道现在该去哪里找,所以任何帮助我都会非常感激!如果您需要更多详细信息,请直接询问 :)

编辑1:

我没有在这个系统上启用交换:

ubuntu@unifi:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       2.7Gi       190Mi       203Mi       826Mi       886Mi
Swap:            0B          0B          0B
ubuntu@unifi:~ $ grep -i swap /etc/fstab 
ubuntu@unifi:~ $ 

答案1

让我们创建缺失的/swapfile......

笔记:命令使用不当dd可能导致数据丢失。建议复制/粘贴。

sudo swapoff -a           # turn off swap
sudo rm -i /swapfile      # remove old /swapfile

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

sudo chmod 600 /swapfile  # set proper file protections
sudo mkswap /swapfile     # init /swapfile
sudo swapon /swapfile     # turn on swap
free -h                   # confirm 4G RAM and 4G swap

确认 /etc/fstab 中的此行...并确认没有其他“交换”行...

/swapfile    none    swap    sw      0   0

reboot                    # reboot and verify operation

相关内容