介绍
我的服务器运行在 Debian 上,我想两天前它内存不足了,因为它变得非常慢。每次都慢一点。连续两次它不知何故在凌晨 0 点再次开始响应。
所以我的问题是
Debian 会在凌晨 0 点清除内存吗?还是内存之外的其他东西?我该如何轻松解决这个问题?通过增加交换空间?
答案1
安装 sysstat(如果尚未安装)。这将提供系统资源的历史统计数据。
然后,您可以sar -r
每隔五分钟运行一次以查看内存使用情况。滚动回到您提到的时间左右,然后实际查看所涉及的数字。
答案2
补充其他答案:
/etc/crontab
在文件夹中查找在/etc/cron.d
该时间前后运行的任何 cron 作业。(请参阅了解man cron
此文件的工作原理)。还有其他文件夹(cron./monthly/weekly/dailyhourly
)包含在这些间隔内运行的作业,但可能只cron.hourly
包含将在午夜运行的作业,并且在标准 Debian 配置中通常为空。
另一种可能性是午夜事件只是巧合,Debian 的内存不足,内核调用了oom_killer
(关联),它会尝试通过基于评分系统终止进程来保持自身存活。但是,如果是这种情况,您可能会注意到您的服务未运行。 dmesg
将记录自您启动操作系统以来调用 oom_killer 的任何时间点。(/var/log/kern.log
将有较旧的版本)
不过要明确一点。Debian(或任何 Linux)本身并没有什么可以清除内存。RAM 可以是空闲的,Linux 通常将其用作文件系统的缓存,直到有需要时为止,也可以分配给某个进程。
答案3
你用过 top 或 htop 吗?在那里你可以看到发生了什么。
查看凌晨 0 点之前和之后的 0 点 ;)。然后您可以查看是否有东西清理了您的内存。但我不这么认为,也许是清理了缓存,但只有当 RAM 足够时,他才会缓存文件。
当您的服务器进入交换状态时,您需要更多的 RAM 或更少的运行进程。