atitti 提升穩定性的藝術之程式代碼級别穩定性的藝術 attialx著 艾提拉著 s420.docx
1. 前言 1
2. 為什麼會發生穩定性問題 1
2.1. 單點故障(單點故障率較高) 1
2.2. 複雜 1
2.3. 資源耗盡 1
2.4. 死鎖與等待 1
2.5. 崩潰 1
3. 常見措施 2
3.1. Try catch throwable解決異常 2
3.2. 保證資料正确性,增加key效驗等 2
3.3. 注意null的處理 null忽略 2
3.4. 增加定時釋放資源機制防止資源占用過多Gc自動釋放資源 2
3.5. 增加future timeout機制,防止死鎖 阻塞 2
3.6. Treadlocal機制隔離死鎖 2
3.7. 程序隔離 2
3.8. 檢測機制 定時檢測主要服務問候 與狀态切換 2
3.9. 重試機制 2
3.10. 更好用的第三方架構類庫 2
3.11. 奔潰日志總結 wanging 2
3.12. 心跳機制 2
3.13. 按照穩定性最佳實踐流程走 2
4. 穩定性測試 2
4.1. Throw ex測試 2
5. Atitit.提升穩定性之道 2
1. 前言
2. 為什麼會發生穩定性問題
3. 常見措施
4. 穩定性測試
5. Atitit.提升穩定性之道
1. 前言 2
2. 為什麼會發生穩定性問題 2
2.1. 單點故障(單點故障率較高) 2
2.2. 複雜 2
2.3. 資源耗盡 2
2.4. 死鎖與等待 2
2.5. 崩潰 2
3. 常見措施 3
3.1. Try catch throwable解決異常 3
4. 第一章 資源耗盡 3
4.1. 資源占比過高 ( 3
4.2. 磁盤空間 磁盤空間不足,造成許多的莫名其妙的問題.也許提示連接配接耗盡.. 3
4.3. /io讀寫 3
4.4. /cpu/記憶體/ 3
4.5. 網絡等占用過高) 3
4.6. 檔案句柄數量 3
4.7. 線程數量 3
4.8. 句柄 網絡連結數量 3
4.9. 非托管資源的釋放 3
4.10. 病毒造成網絡句柄耗盡 3
5. 第二章死鎖與等待 4
5.1. 等待與逾時 單點故障 單程序 單線程等 4
5.2. 網絡死鎖 4
5.3. 檔案死鎖,檔案并發讀寫 4
5.4. 資料庫連接配接死鎖 4
5.5. 代碼死鎖 4
5.6. Cli指令行死鎖 4
5.7. GUI界面死鎖(檔案格式錯誤,有确認框彈出等情況) 4
5.8. 類庫沖突 5
5.9. 熱更新熱部署(業務可用性 5
5.10. 程式崩潰 5
5.11. Timeout 5
6. 程式崩潰 5
6.1. 解決方案:多程序 5
6.2. 程序隔離 5
6.3. Rest接口隔離 5
6.4. 守護程序 5
6.5. 類庫沖突,造成部署問題 5
6.6. 熱更新的支援不足,部署比較麻煩 5
6.7. Web服務跟資料庫服務崩潰 5
6.8. 其他的潛在隐患: 5
6.9. 子線程異常造成主線程崩潰(java不影響,.net有這個問題) 5
6.10. 别的網絡socket連接配接釋放問題... 6
6.11. 直接記憶體讀寫 6
6.12. Stream的關閉釋放. 6
6.13. native method調用的記憶體 6
7. #----解決方法 大方向 6
7.1. 殺毒 木馬清除軟體 6
7.2. 适當備援 故障叢集 6
7.3. 守護模式開啟 守護各大資源的監控 循環守護機制 6
7.4. 檢測機制 定時檢測主要服務問候 6
7.5. 重試機制(包括自動重連) 6
7.6. 奔潰日志總結 6
7.7. 盡可能的減少單點并發與讀寫 6
7.8. Gc自動釋放資源 與逾時自動釋放 6
7.9. 熱更新熱部署) 更簡化的開發架構(.. 7
7.10. 更好用的第三方架構類庫 7
7.11. 最佳推薦流程( 7
作者 老哇的爪子 Attilax 艾龍