一個配置引發的血案


一個配置引發的血案,記一次線上事故的復盤。

一天晚上的業務高峰期,出現了超時(數據加載不出來的情況)。

聯想到前一天有發版的工作,第一功能上並沒有太大的調整,此次發版內容更多的是新增的功能,用戶使用量也較少,基本可以排除因功能導致的問題;第二是否中間件出現問題,因數據的交互,有80%是和redis交互,從慢日志查詢中未發現有異常情況;第三隱約有人說過用於負載的服務,昨天發版關閉掉了一台。

通過netstat -an |grep 'ESTABLISHED' |grep -i 'port' |wc -l,可查看連接數的情況。

從上面的命令查看到當台服務已經到了瓶頸,然后立即從配置中查看,確實只有一台對外在運行着的。

處理方法:立即啟動另外一個服務,修改配置后,驗證。業務已正常運行。

 

和昨晚參與發版的人員核對,昨晚關閉掉一台負載的原因。說是因為啟動兩台時,出現新加的功能,調用新的服務會出現報錯的情況。因未找到原因,和運維溝通后,最后決定只起一台服務。

聽完說明后,第一個聯想到的就是配置的ip和端口是否正常? 一看配置,ip是本地IP,問題已定位。修改本地IP為域名,功能正常。

此次事件,有多個環節可避免掉此事件。結果各個環節上的疏漏,導致了此次事件的發生。

一、上生產環境的IP配置,統一采用域名的方式。這個是約定,因開發人員不清楚線上域名的情況,未能執行好。

二、運維是部署線上環境的第一人,各服務運行在那台對應的機子上,是最為清楚的一個人,對配置的檢查,需要把好最后一道崗。因習慣,未對新增的配置進行審查。

三、對於此次問題的處理,在一定程度上也是可行的方案。但是缺少了數據的支持,未做好測試、評估的工作。在用此方案處理后,未及時反饋給相關人員。

四、對線上運行環境有一定了解的技術(開發)人員未在場。

 

對於以上問題,解決的方法有很多種。但方法是對於特定問題,而提出的解決方案,是針對特定的場景和特定的人的,對於場景和人的依賴性比較大。

有沒有什么其他方式可以采用呢?

將方法上升到流程規范,讓它具有一定的普適性,有具體的步驟或標准,讓每個人都可以執行。減少對人的依賴。

例如:

一、上面的問題,規范上加上明確的說明(可增加上線檢查清單),生產環境只能采用域名的方式。開發人員或運維人員,其中一人都可以排除此問題。

二、對線上環境的調整,需要根據數據(業務高峰期的訪問量等指標)進行評估、驗證,才能進行調整。調整后需要通知(反饋)給相關人員。

 

流程規范,是可以提高團隊效率的。 從個體來看,因為流程規范的存在,可能存在效率降低的情況,但從團隊的角度來看,好的流程規范是可以提高效率的。

上面的問題,通過制定的規范去避免,執行得當,是可以提高效率的。多一步的檢查,卻少了線上問題的出現,也減少了其他人員排查定位的時間,可謂一舉多得。

 

 

作者:魚天翱
出處:https://www.cnblogs.com/fishsky
版權歸作者所有,轉載請注明出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM