案例一:
簡要描述:
生產服務器/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.杯具產生.