前段时间公司的一个项目出现了一个 bug,使用 ajax 上传大文件时会出现网络问题。使用 chrome 开发者工具查看网络请求时,发现错误是 ERR_CONNECTION_RESET
。看到这个错误就想到访问 Google 出现的情况, 哈哈。然后用 IE 的开发人员工具查看网络请求,显示的错误码是 403。
这段时间也没更新代码,本地测试也是OK的。但是部署到服务器上就出问题了。因为服务器是租用淘宝聚石塔的,难道是因为防火墙的问题?但是也就仅仅只有这个页面存在问题,其他都是正常的。
服务器上安装了 nginx
和 tomcat
,查看 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
这样就完美的解决了问题。