天天看點

atitti 提升穩定性的藝術之程式代碼級别穩定性的藝術 attialx著 艾提拉著 s420.docx 1. 前言 1 2. 為什麼會發生穩定性問題 1 2.1. 單點故障(單點故障率較高) 1

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 艾龍