几个月来,我注意到,自从我在 AWS 上设置服务器以来,我的实例几乎每天都会在固定时间(大约 UTC 时间早上 6 点)出现可用内存突然下降的情况。这是一个 t2.nano 实例,足以满足我的需求。当时没有异常活动,通常没有连接到服务器(这是一个普通的个人网站)。我创建了一个服务器监视 Python 脚本来记录此情况并在内存下降时重新启动服务器:
2016-12-08 06:14:30,971 - AWS_Server_Watcher - INFO: Free memory: 280 MB
2016-12-08 06:16:31,096 - AWS_Server_Watcher - INFO: Free memory: 280 MB
2016-12-08 06:18:31,231 - AWS_Server_Watcher - INFO: Free memory: 280 MB
2016-12-08 06:20:31,365 - AWS_Server_Watcher - INFO: Free memory: 280 MB
2016-12-08 06:22:31,499 - AWS_Server_Watcher - INFO: Free memory: 280 MB
2016-12-08 06:24:31,634 - AWS_Server_Watcher - INFO: Free memory: 280 MB
2016-12-08 06:26:31,822 - AWS_Server_Watcher - INFO: Free memory: 44 MB
2016-12-08 06:26:31,822 - AWS_Server_Watcher - INFO: Server restarted
2016-12-08 06:27:09,751 - AWS_Server_Watcher - INFO: Server Watcher starting up
2016-12-08 06:29:09,905 - AWS_Server_Watcher - INFO: Free memory: 281 MB
2016-12-08 06:31:10,058 - AWS_Server_Watcher - INFO: Free memory: 281 MB
2016-12-08 06:33:10,209 - AWS_Server_Watcher - INFO: Free memory: 281 MB
有人知道发生了什么吗?我怀疑这与 EC2 基础设施有关,超出了我的控制范围。但我没有签署 AWS 的付费支持计划,所以我无法向他们询问。
答案1
我很惊讶没有更多像我这样的报告。
这可能是因为这是正常的、预期的行为......但这与 AWS 没有任何关系。
这是已安装的服务器操作系统本身,执行预定的日常维护/后台工作。
在停止调查之前,实际上你已经非常接近了。
在该文件中/etc/crontab
,你会发现以下内容:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
看起来很熟悉,对吧(从您找到的系统日志消息来看)?现在,查看该目录中的文件。
$ ls /etc/cron.daily
apport apt aptitude bsdmainutils dpkg logrotate man-db mlocate
ntp popularity-contest update-notifier-common upstart
这些脚本每天从 06:25 开始依次运行,无论服务器配置使用哪个时区,这些脚本几乎在任何地方的每台 Ubuntu 机器上都运行。可能会有例外,但我从未使用过没有类似功能的任何其他 Linux 发行版。
如您所知,t2.nano 机器只有 512 MiB 内存,对于现代 64 位操作系统来说,这是一个非常小的内存量。但是,正如您所提到的,它们对于很多事情来说仍然是完美的。您可能需要添加一些交换空间,并可能使您的监控稍微不那么激进,因为这些是标准组件,我建议不要修改或禁用它们,除非您对所做的事情有充分的了解。