開發人員處理生產環境系統問題經驗之談


       系統維護在軟件生命周期中,持續時間最長的工作。處理生產環境系統上的運維問題,幾乎成了每位開發人員的必修課。
      當碰到問題的時候,我們如何高效地、快速、一針見血地去處理和解決,是值得我們思考的問題。
  當然,影響效率的,還有開發人員對系統的熟悉程度、對業務的熟悉程度、自身的溝通處理和協調能力和環境等客觀因素。
  
  本文只是對通用的方法進行經驗性總結。
 
  • 確定是否真的是系統有問題,還是用戶操作問題
有時候用戶反饋系統不可用,不一定是系統問題,可能是用戶操作失誤或者用戶不會操作,導致系統無法使用,這個是首先需要排查的,從最表層看起,對問題也能先有個全局的了解。在很多公司,如果是操作類的問題,往往技術支持或者業務運維人員就能處理得了,很多時候都流轉不到開發人員這里。
當然,有的時候為了避免技術支持太粗心或者沒有准確判斷到問題所在,抑或是有的公司壓根就沒有技術支持人員,所以這個步驟,也是開發人員處理問題的時候,首先需要確定的。
 
  • 在測試環境、本地環境能否重現
排除了不是用戶操作的問題,而且憑借自己的業務經驗和技術經驗,不能一眼看出問題所在,這個時候,要做的,就是看看本地(測試)環境,能否重現這個問題,如果能夠重現,很幸運,基本上調試一下就能發現問題的原因了。
 
  • 排查部署問題
如果在本地和測試環境都正常,而且最近時間內剛好上線了新功能,這個時候很有可能是部署的時候,出現了問題,例如生產環境部署的代碼和配置不正確,沒有部署到最新的代碼,如果有多個負載,甚至有可能是有些負載是正常的,有的負載是部署有問題的。
如果部署出現問題,往往是開發、運維人員粗心大意、或者是部署工具不可靠造成,往往出現在多機部署的分布式環境中。
 
  • 排查數據問題
數據問題,其實是最難的一個問題。
數據是系統的血液,在排錯的過程中,由於測試環境和生產環境數據不一致,到時很多問題無法排查。有的公司會構建一個“模擬環境”,定時從生產環境還原一份數據到“模擬環境”,方便調錯。
而且如果是數據問題,很多時候會牽扯很復雜的業務流程,甚至出現問題的地方,往往不是問題的根源,需要經過長期,綜合的分析,才能找出問題,為了找到問題,有時候還需要在系統關鍵的地方寫個日志,用來跟蹤問題的原因。
對於這種問題,開發者在開發的過程中,一方面要保證代碼質量,另外一方面要多記日志,留有后手,方便日后調錯。
 
  • 排查並發問題、性能問題
如果是面向公眾用戶的系統,而且用戶量比較大,並發比較大,這個時候,有的問題,往往是因為並發導致。有可能因為並發引起臟讀、臟寫。這種問題需要重現的話,代碼需要很好的支持單元測試和要求要有比較好的測試體系。
 
  • 排查網絡因素、CDN、緩存、客戶端兼容性等運行環境因素
系統的客戶端、服務端運行環境不一致,或者網絡抖動,也可能會引發系統問題。對於服務端環境網絡問題,需要有一套網絡監控體系,看看發生問題的時間節點,網絡是否正常。
如果網頁前端方面的問題,有時候會是瀏覽器緩存或者CDN緩存引發的問題,當然,也有可能是瀏覽器兼容性問題(我不是專業的)。
 
 
如果說的不對請大伙指正,如果大伙有更好的方法和經驗可以分享出來。
 
 
 
 


免責聲明!

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



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