前段时间公司的一个项目出现了一个 bug,使用 ajax 上传大文件时会出现网络问题。使用 chrome 开发者工具查看网络请求时,发现错误是 ERR_CONNECTION_RESET 。看到这个错误就想到访问 Google 出现的情况, 哈哈。然后用 IE 的开发人员工具查看网络请求,显示的错误码是 403。

这段时间也没更新代码,本地测试也是OK的。但是部署到服务器上就出问题了。因为服务器是租用淘宝聚石塔的,难道是因为防火墙的问题?但是也就仅仅只有这个页面存在问题,其他都是正常的。

服务器上安装了 nginxtomcat ,查看 nginx 的访问日志,发现记录太多,放弃。查看错误记录发现提示磁盘空间不足,日志无法写入。

果断用 df -lh 查看磁盘占用情况,发现挂载点 / 已满。切换到根目录,运行 du -sh * 查看各文件夹大小,发现 var 占用了30多G,继续 du -sh /var/* 最终找到文件夹 /var/spool/clientmqueue 占用30多G。

Google /var/spool/clientmqueue 这个文件夹占用过大的原因发现是

系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。

好吧,果断删除 /var/spool/clientmqueue 文件夹下的所有内容。重新测试,发现 bug 消失了。

然后去 /etc/cron* 看看有什么样的定时任务,发现有很多,应该是创建聚石塔服务器创建的,也不好修改。那么就只能采取迂回战术了。在 /etc/cron.daily 下新建文件 rmclientmqueue

#!/bin/sh
rm -rf /var/spool/clientmqueue/*
chmod u+x rmclientmqueue

这样就完美的解决了问题。