atitti 提升稳定性的艺术之程序代码级别稳定性的艺术 attialx著 艾提拉著 s420.docx
3.1. Try catch throwable解决异常 2
3.4. 增加定时释放资源机制防止资源占用过多Gc自动释放资源 2
3.5. 增加future timeout机制,防止死锁 阻塞 2
1. 前言
2. 为什么会发生稳定性问题
2.1. 单点故障(单点故障率较高)
2.2. 复杂
2.3. 资源耗尽
2.4. 死锁与等待
2.5. 崩溃
3. 常见措施
3.1. Try catch throwable解决异常
3.2. 保证数据正确性,增加key效验等
3.3. 注意null的处理 null忽略
3.4. 增加定时释放资源机制防止资源占用过多Gc自动释放资源
3.5. 增加future timeout机制,防止死锁 阻塞
3.6. Treadlocal机制隔离死锁
3.7. 进程隔离
3.8. 检测机制 定时检测主要服务问候 与状态切换
3.9. 重试机制
3.10. 更好用的第三方框架类库
3.11. 奔溃日志总结 wanging
3.12. 心跳机制
3.13. 按照稳定性最佳实践流程走
4. 稳定性测试
4.1. Throw ex测试
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 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax