案例一:
简要描述:
生产服务器/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.杯具产生.