我在 Linode 上运行着一台 Ubuntu 12.04 512mb VPS 服务器。我将其设置为服务大约 6 个 Wordpress 网站。
几个星期以来,它每天都会崩溃 2-3 次。Linode 会自动重启机器,但如果我禁用它,我要么根本无法通过 SSH 登录,要么即使我登录了,服务器响应也会非常慢。
就在昨晚,我把所有东西从 Apache 切换到了 nginx,但这并没有帮助。
查看日志文件,我发现的唯一一件事是最后一条记录几乎总是
Mar 28 06:05:01 cappicola CRON[10852]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
虽然有时这是在重启前几分钟。有时我也会发现
Mar 28 06:09:01 cappicola CRON[10860]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
日志文件中仅有的其他条目是与 postfix 和 fail2ban 相关的警告。有什么想法吗?
答案1
第二个日志字符串是由您的 cron 活动引起的,该活动会查找空闲的 php 会话并终止它们。要解决此问题,您应该/usr/lib/php5/maxlifetime
按照此处指定的方式编辑文件 (https://stackoverflow.com/questions/3865303/debian-based-systems-session-killed-at-30-minutes-in-special-cron-how-to-overri)。
如果这没有帮助,您应该尝试在重启之前获取有关系统性能的更多统计信息。要解决此问题,请查看此处的答案(http://www.unix.com/linux/110432-system-getting-crashed.html)。
答案2
您有类似 Zabbix 的监控工具吗?登录一些统计数据会很有用。您也可以使用 sar(1)。平均负载怎么样?
答案3
fail2ban 很可能是导致机器冻结的原因。
尝试禁用所有规则/fail2ban 并检查反应。我猜这与 python 在作为服务器运行时发疯有关。还请注意,读取日志文件的方法可能会退化,以防日志文件变得非常大并且系统必须将文件加载到内存中以查找某些匹配项。
另外:检查文件系统:[sudo] shutdown -Fr now