BugFix: Blog 升级、安装插件期间访问出错

USTC Blog 升级、安装插件期间,访问首页会提示出错。原因是 WordPress 进行升级、安装插件等操作时,会生成 .maintenance 文件,wp-includes/load.php 会试图 include 这个文件以检查其存在性。为了保证安全,USTC Blog 禁止 include 非 .php 后缀的文件。因此我们将 .maintenance 修改成 .maintenance.php 以绕过此限制。相关 commit:

http://gitlab.lug.ustc.edu.cn/ustc-blog/wordpress/commit/4537059a91aea17a6d85151293b6a35c668fa6ff

感谢 Moqi Lee 同学的 bug 反馈。

9月7日 blog 数据库 OOM kill

9月7日16:30,blog 数据库(mysqld)被 OOM kill。故障在 19:00 左右恢复。

恢复方法是先后重启 mysql 和 php-sandbox 服务。php-sandbox 有一个已知的 bug,mysql 重启后不会自动重连,因此 mysql 重启后必须重启 php-sandbox 服务。

本次故障是内存溢出引起的,当天 14:30 已经收到 monit 的邮件报警,但当时唯一接收报警的 boj 没打开数据流量,没收到邮件,酿成服务中断的悲剧。我们今后将让服务器维护小组的更多人收到报警。

blog 启用 monit 监控报警

由于前些天 blog.ustc.edu.cn 服务器多次发生 OOM Kill 等异常情况,我们使用 monit 对系统行为和各进程进行了监控和报警。这是 LUG 网络服务首次部署较为细粒度的监控和报警。

monit 配置文件参考:http://gitlab.lug.ustc.edu.cn/boj/blog-monit-config/tree/master

希望 mirrors 等其他服务的维护者也部署 monit 之类的报警机制。

USTC Blog 服务8月22日晚间中断

8月22日晚间,USTC Blog 服务出现乱码、显示0个用户等问题。

此问题由 Hao Wang 在邮件列表里报告(http://archive.lug.ustc.edu.cn/2013-August/012242.html)。

bible 在第一时间修复了这个问题(http://archive.lug.ustc.edu.cn/2013-August/012244.html

boj 给出了此次故障的一些技术信息(http://archive.lug.ustc.edu.cn/2013-August/012248.html

当时 blog 服务器上没有运行特别占用资源的服务,而 freeshell 上运行了批量解析域名的脚本,resolver 是 blog,故有可能是由于 blog 上自建的 BIND9 recursor(进程名:named)占用了过多内存。之前已经设置了 BIND9 recursor 缓存限制为 512M,因此不知道是什么原因。总之,这种不熟悉的服务最好不要在生产服务器上搭建。

这次还揭露一个问题,服务器报警不够全面。早先的报警是”黑盒测试”,在 HTTP response 不包含给定字符串时触发,这次首页和我的个人博客没有明显故障,是发现不了的。因为硬盘满而出故障那次之后,还加入了磁盘报警,这是第一个”白盒测试”,不过这次没派上用场。应该再加一种白盒测试,tail -f syslog,一旦出现某些感兴趣的关键词就报警。