每天早上 06:25 之后,我的 Java Web 服务器应用程序就会崩溃。在系统日志中,我收到类似以下内容的信息:
Jan 20 06:25:09 qswp-portal kernel: [724576.041037] Out of memory: Kill process 21435 (java) score 199 or sacrifice child
Jan 20 06:25:09 qswp-portal kernel: [724576.043434] Killed process 21435 (java) total-vm:2266296kB, anon-rss:257212kB, file-rss:6232kB
该应用程序在一个非常小的盒子上运行,只有 512MB 的 RAM(带有 1GB 的交换空间),理想情况下,我想保持这种状态。
经过一番搜索后,我发现每日 cron 作业计划在 0625 运行,这大概就是原因(即同时发生太多事情,机器无法处理)。
我能做些什么来防止这种情况发生 - 也许是错开每日 cron 作业?是否有特定的每日 cron 作业可能会导致此问题?
这是一个相对较新的问题,似乎在更新后才开始发生(使用apt-get update
)。不幸的是,我刚刚意识到这一点,所以我不确定哪个更新可能是问题所在(假设这不是巧合)。
free -h
编辑:根据要求,这是正常负载下的输出。
total used free shared buff/cache available
Mem: 488M 335M 10M 2.9M 142M 122M
Swap: 1.0G 21M 1.0G
答案1
您的系统内存不足。请添加更多内存或找出哪些进程占用了内存(例如您的 java 进程),然后减少使用的内存量。