MyException - 我的异常网
当前位置:我的异常网» 研发管理 » Atitit.软件开发提拔稳定性总结

Atitit.软件开发提拔稳定性总结

www.MyException.Cn  网友分享于:2015-08-26  浏览:2次
Atitit.软件开发提升稳定性总结

Atitit.软件开发提升稳定性总结

 

#----影响稳定性几个类别 3

1. 资源和内存泄漏溢出 3

2. 数据库/文件死锁 3

3. 类库冲突 3

4. 热更新热部署(业务可用性 3

5. 程序崩溃 3

6. 磁盘空间/cpu/内存占用过高 3

#-----影响稳定性的因素 3

7. 内存泄漏溢出 3

8. 数据库连接泄漏 3

9. 数据库死锁 3

10. 类库冲突,造成部署问题 4

11. 热更新的支持不足,部署比较麻烦 4

12. Web服务跟数据库服务崩溃 4

13. 非托管资源的释放 4

14. 其他的潜在隐患: 4

15. 多线程并发读写死锁 4

16. 子线程异常造成主线程崩溃(java不影响,.net有这个问题) 4

17. 文件并发读写 5

18. 别的网络socket连接释放问题... 5

19. 直接内存读写 5

20. Stream的关闭释放. 5

21. native method调用的内存 5

22. 磁盘空间不足,造成许多的莫名其妙的问题.也许提示连接耗尽.. 5

#----解决方法归类总结 6

23. 更简化的开发架构(热更新热部署).. 6

24. 更好用的第三方框架类库 6

25. 类库冲突避免(ide,检测工具,开发时,运行时) 6

26. 引擎+脚本结构(c++,java+python,lua,php) 6

27. 最佳推荐流程(避免死锁跟解除) 6

28. 更简化的编程语言 6

29. 提升稳定性的内部封装框架/类库 6

30. 自动资源释放池 6

31. 监测,warnning,跟自动恢复 6

32. 压力测试 6

33. 容错(包括自动重连) 6

34. 语言级的新的特性 6

35. 故障集群 6

#----解决方法总结 6

36. php/.net 6

37. 建立基于提升稳定性的内部封装框架/流程文档 7

38. Finalize/Dispose 7

39. 容错(包括自动重连) 7

40. SoftReference 7

41. 连接池的配置自动超时回收Connection+超时自动断开conn 7

42. 超时回收资源gc 8

43. 语句块回收资源/using块中自动调用Dispose 8

44. 崩溃时候儿core  dump并且重启 8

45. 日志,缓存等文件,尽可能按时间生成多个文件。。 8

46. 重要业务服务和页面gui监测 8

47. 监测程序(cpu,内存占用, io队列深度磁盘空间,数据库连接数,数据库死锁监测) 8

48. 网络,文件操作使用wrap类库secury方式调用 8

49. 死锁自解除(数据库,文件等) 9

#----压力测试 9

 

作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

#----影响稳定性几个类别

1. 资源和内存泄漏溢出

2. 数据库/文件死锁

3. 类库冲突

4. 热更新热部署(业务可用性

5. 程序崩溃

6. 磁盘空间/cpu/内存占用过高

#-----影响稳定性的因素

 

7. 内存泄漏溢出

有时gc不起生效..可以调用native方法释放内存. 

 new memory().start();监测内存占用,当物理内存占用超过此值M时,调用SetProcessWorkingSetSize方法回收内存。

8. 数据库连接泄漏

连接池自动关闭连接,简化开发,,同时提升性能..

9. 数据库死锁

避免多个线程/请求/事务修改同一个记录..

不使用事务或者使用单语句事务

要是必须使用事务,需要调整代码.

Dbms 可以探测到死锁,但是不能自动释放死锁,需要监测程序自动解锁锁死的连接..(要是数据库被多个应用使用,要修改驱动/或者使用反射尝试,记录此应用打开的连接端口,到数据库端过滤,在执行解锁)

10. 类库冲突,造成部署问题

需要工具检测

11. 热更新的支持不足,部署比较麻烦

Classloader?? Resin  glassfishweb服务器检测...jboss支持有限的热部署.

 

12. Web服务跟数据库服务崩溃

数据库服务启用服务监测,自动恢复..Web服务单个的进程,需要寻找个监测程序或者安装为服务.

13. 非托管资源的释放

托管资源交给GC就好,非托管资源则必须使用框架来自动回收 或者  亲自写代码回收

14. 其他的潜在隐患:

15. 多线程并发读写死锁

压力测试解决.

16. 子线程异常造成主线程崩溃(java不影响,.net有这个问题)

抛出线程,线程体内要TRY CATCH。。否则抛出EXP导至主程序OUT。。特别重要,一定要做.

17. 文件并发读写

18. 别的网络socket连接释放问题...

19. 直接内存读写

20. Stream的关闭释放.

21.  native method调用的内存

finalize()中可以用本地方法来调用它。以释放这些“特殊”的内存空间。

 

22. 磁盘空间不足,造成许多的莫名其妙的问题.也许提示连接耗尽..

解决:添加监测程序 

 

#----解决方法归类总结

23. 更简化的开发架构(热更新热部署)..

24. 更好用的第三方框架类库

25. 类库冲突避免(ide,检测工具,开发时,运行时)

26. 引擎+脚本结构(c++,java+python,lua,php)

27. 最佳推荐流程(避免死锁跟解除)

28. 更简化的编程语言

29. 提升稳定性的内部封装框架/类库

30. 自动资源释放池

31. 监测,warnning,跟自动恢复

32. 压力测试

33. 容错(包括自动重连)

34. 语言级的新的特性

35. 故障集群

 

#----解决方法总结

36. php/.net 

Php的自动释放资源做的非常好,几乎所有的的问题都解决了...同级的脚本语言ruby几乎和php同时起步,python更是早好几年,,最终市场php应用最广泛(c系列的语言风格也很重要,c++,java 一脉相承)...ruby/python解决了热更新跟类库冲突,但是好像都没解决自动释放资源的问题.

Java 也可以使用Quercus类库内嵌python/Php/js,内嵌方式能不能自动释放资源还没有检验

.net也解决了部分稳定性问题.(主要是热更新跟类库冲突,但是没解决资源自动释放的问题) ,不过ide vs的强大大大提升了2倍以上的开发效率.

 

37. 建立基于提升稳定性的内部封装框架/流程文档

 

全面代替系统默认库和常使用第三方库,从框架级角度解决一些问题,,会损失一点儿性能跟灵活性..需要的时候儿也能直接使用系统库...

建立api文档已便查看..

38. Finalize/Dispose

finalize()的主要用途是释放一些其他做法(non--new法)开辟的内存空间,以及做一些清理工作

使用code template配合ide自动生成Finalize框架方法

39. 容错(包括自动重连)

 

40. SoftReference

java .lang.ref 包,其中定义了三种引用类。这三种引用类分别为SoftReference、 WeakReference和

 

 

41. 连接池的配置自动超时回收Connection+超时自动断开conn 

c3p0.checkoutTimeout=10000

c3p0.unreturnedConnectionTimeout=25

c3p0.maxConnectionAge=20 

 

 

42. 超时回收资源gc

需要建立框架,比较简单的超时自动回收资源.可以解决大部分问题...使用code template配合ide自动import 自定义类库代替系统类库.

 

43. 语句块回收资源/using块中自动调用Dispose

44. 崩溃时候儿core  dump并且重启

Java的调用oom自动恢复脚本..

PRPGRAMCS内要TRY CATCH,发现主程序出问题,重启。

PROGRAME。CS内增加UnhandledException 的捕获..

 

 

45. 日志,缓存等文件,尽可能按时间生成多个文件。。

可以防止万一个哪个文件句柄没被释放,也不会影响后面的文件写入。

 

46. 重要业务服务和页面gui监测

可以及时发现服务out service

 

47. 监测程序(cpu,内存占用, io队列深度磁盘空间,数据库连接数,数据库死锁监测)

提前发现不稳定性因素...

48. 网络,文件操作使用wrap类库secury方式调用

默认的sdk库使用一定要TRYCATCH。

 

49. 死锁自解除(数据库,文件等)

 

#----压力测试

当前项目虽然并发不大(当前200左右,默认的配置可支持5000左右)...

但是压力测试可以提前测试出稳定性方面的问题..

 

常常使用工具jmeter,LoadRunner等

 

文章评论

编程语言是女人
编程语言是女人
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
我是如何打败拖延症的
我是如何打败拖延症的
老程序员的下场
老程序员的下场
每天工作4小时的程序员
每天工作4小时的程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员和编码员之间的区别
程序员和编码员之间的区别
鲜为人知的编程真相
鲜为人知的编程真相
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员必看的十大电影
程序员必看的十大电影
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员都该阅读的书
程序员都该阅读的书
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
一个程序员的时间管理
一个程序员的时间管理
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
中美印日四国程序员比较
中美印日四国程序员比较
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
10个调试和排错的小建议
10个调试和排错的小建议
 程序员的样子
程序员的样子
总结2014中国互联网十大段子
总结2014中国互联网十大段子
漫画:程序员的工作
漫画:程序员的工作
Java程序员必看电影
Java程序员必看电影
代码女神横空出世
代码女神横空出世
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员的鄙视链
程序员的鄙视链
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有