空间不足导致的网站事故

 

案例一:

简要描述:

生产服务器/home目录磁盘空间100%,导致解压缩异常,进而导致网站频道不能访问.

服务环境描述:

本地发布服务器 数据中转机 预发布服务器 生产服务器

发布流程描述:

在本地发布服务器上编译打包-->传输到数据中转机-->拉取数据包到预发布机-->预发布测试通过-->发布到生产服务器

场景回放:

预发布测试通过后,通过发布脚本发布服务后,F5报警,应用服务没有报警,频道首页无法打开.

发现生产服务器的频道首页index.html 为空白,monitor文件空白.

原因分析:

生产服务器/home目录空间100%,tar解压失败,脚本继续执行(bug),生成了空的index.html monitor文件.导致F5自动disable服务,进而导致网站部分功能不能访问.

补救措施:

web服务器 /home目录加磁盘容量监控 (整个disk有监控,用户上传数据会保存到存储设备)

修复发布脚本bug

 

案例二:

简要描述:

本地发布服务器磁盘空间100%导致频道首页出现错误.

脚本摘要:

rm /home/ued/deploy/* -rf

mkdir -p /home/ued/htdocs_convert/htdocs

rsync -aC --delete /home/ued/htdocs /home/ued/htdocs_convert/

rm -rf /home/ued/htdocs_convert/htdocs/old

find /home/ued/htdocs_convert/htdocs -name "*.*"|egrep -i ".s?html?$|.inc$|.js$|.css$"|xargs sed -i "s#http://static.

domain.com/\([-._a-zA-Z0-9/]*\)\([0-4a-nA-N]\.\)\(jpe\?g\|gif\|png\|swf\)#http://static1.domain.com/$datestamp/\1\2\3#g;s#http://s

tatic.domain.com/\([-._a-zA-Z0-9/]*\)\([5-9o-zO-Z]\.\)\(jpe\?g\|gif\|png\|swf\)#http://static2.domain.com/$datestamp/\1\2\3#g;s#ht

tp://static.domain.com#http://static.domain.com/$datestamp#g;"

cd /home/ued/htdocs_convert;tar -cvzf /home/ued/deploy/$DEPLOY_FILE_NAME  htdocs/

./rsync_deploy.sh(发布后续环节)

异常状况:

静态页面发布成功后,频道首页样式丢失.

出现http://static.domain.com/1341341243/134413244134/css/style.css 地址

正常地址应该是http://static.domain.com/1341341243/css/style.css

本地发布服务器的磁盘空间100%

原因分析:

通过产生的地址可以发现脚本中替换部分文件似乎执行了两遍.

/home/ued/htdocs_convert/(目录与svn保持一致)

rsync -aC --delete 应该可以保证 /home/ued/htdocs中的文件不会被执行两次替换啊..

但确实是执行了两次,奇怪.哪种情况会导致这个问题呢?

其他信息:

/home/ued/htdocs_convert/ (250M)

/home/ued/htdocs_convert/htdocs/old(50M)

压缩后(40M)

分析结果:

1.空间小于40M,替换完成,压缩失败,发布失败 此时空间已经100%

2.第二次执行发布脚本,rsync失败导致第一次替换后的文件没有被同步,继续执行删除操作(rm -rf /home/ued/htdocs_convert/htdocs/old),释放了50M空间

3.执行替换操作(注意此时替换了两次),然后压缩50M空间已经够压缩使用,压缩成功,发布成功(css的链接被替换了两次)

4.杯具产生.

posted @ 2011-02-15 15:17  redcreen  阅读(331)  评论(0编辑  收藏  举报