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:[email protected]

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

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

1. 资源和内存泄漏溢出

2. 数据库/文件死锁

3. 类库冲突

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

5. 程序崩溃

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

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

7. 内存泄漏溢出

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

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

8. 数据库连接泄漏

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

9. 数据库死锁

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

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

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

Dbms 能够探測到死锁,可是不能自己主动释放死锁,须要监測程序自己主动解锁锁死的连接..(要是数据库被多个应用使用,要改动驱动/或者使用反射尝试,记录此应用打开的连接port,到数据库端过滤,在运行解锁)

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

须要工具检測

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

Classloader??

Resin  glassfish等webserver检測...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自己主动恢复脚本..

PRPGRAM。CS内要TRY CATCH,发现主程序出问题,重新启动。

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

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

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

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

能够及时发现服务out service

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

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

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

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

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

#----压力測试

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

可是压力測试能够提前測试出稳定性方面的问题..

常用工具jmeter,LoadRunner等

时间: 2024-09-29 23:44:21

Atitit.软件开发提升稳定性总结的相关文章

Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使用,犹如盲人摸象,虽然都对,但是并不完整 1. 瓦哈比教派的核心思想1 1.1. 归一化,反对多神..反对邪教与不良的 修炼方式1 1.2. 规范化,标准化最佳实践 圣训立国,依法治国1 1.3. 主张整肃社会风尚,净化人们的"心灵1 1.4. 倡导团结,团队建设1 1.5. 回归传统,轻量化1 2

Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向

Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主    过程导向 vs 结果导向 1. 一个伟大的事业必然是过程导向为主 1 1.1. 过程的执行情况(有明确的执行手册及标准) 2 1.2. 麦哲伦的事例证明了过程导向的重要性 2 1.3. 婆罗门教大师商接罗所 过程导向,属于上梵,结果导向,属于下梵 2 1.4. 罗马皇帝诚思录上,说人生本身就是过程导向, 2 1.5. 过程导向基本属于战略层面,侧重与长期,而结果导向只是战术级别,短期容易短视 3 1.6. 任何组织的

atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform

atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform 1. Absoluti 布局(经常使用) 1 2. Flow 布局(不经常使用) 1 3. BorderLayout (不经常使用) 1 4. BoxLayout( html默认布局) 2 5. CardLayout (tab 布局) 2 6. GridLayout 3 7. GridBagLayout 3 8. Fixed 定位(不经常使用) 3

Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php

Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php 1. RFC2396标准 including HTML 4.01 section 17.13.4, and also RFC 1866 (which is supercededby the W3C HTML recommendations). 在form的ContextType是[x-www-form-urlencoded]的时候会对form中的键/值对进行编码,空格被转义成+,

atitit.软件开发--socket框架选型--netty vs mina j

atitit.软件开发--socket框架选型--netty vs mina j . Netty是由JBOSS提供的一个java开源框架 Apache mina 三.文档比较 mina文档多,,, 好几倍... 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明来源: http://blog.csdn.net/attilax 四.UDP协议传输 1. netty将UDP无连接的特性暴露出来:而mina对UDP进行了高级层次的抽象,可以把UD

Atitit.软件开发的几大规则,法则,与原则Principle v3

Atitit.软件开发的几大规则,法则,与原则Principle  v3 1.1. 修改历史22. 设计模式六大原则22.1. 设计模式六大原则(1):单一职责原则22.2. 设计模式六大原则(2):里氏替换原则22.3. 设计模式六大原则(3):依赖倒置原则22.4. 设计模式六大原则(4):接口隔离原则22.5. 设计模式六大原则(5):迪米特法则22.6. 设计模式六大原则(6):开闭原则23. S.O.L.I.D原则(oo fp)33.1. Single Responsibility P

Atitit.软件开发的几大规则,法则,与原则。。。attilax总结

Atitit.软件开发的几大规则,法则,与原则... 1. 设计模式六大原则 2 1.1. 设计模式六大原则(1):单一职责原则 2 1.2. 设计模式六大原则(2):里氏替换原则 2 1.3. 设计模式六大原则(3):依赖倒置原则 2 1.4. 设计模式六大原则(4):接口隔离原则 2 1.5. 设计模式六大原则(5):迪米特法则 2 1.6. 设计模式六大原则(6):开闭原则 2 2. 面向对象的S.O.L.I.D原则 2 2.1. Single Responsibility Princip

Atitit.软件开发的三层结构isv金字塔模型

第一层,Implements 层,着重与功能的实现.. 第二次,spec层,理论层,设计规范,接口,等.流程.方法论 顶层,val层,价值观层,原则,法则,定律等. 这一建构应从界定内涵出发,从器物.制度和意识形式三个层面厘定其表征:并结合发展轨迹,通过比较,探索.建构有利于“本土”文化,必须着力追寻能推动这一文化特质生成的进路,并以发挥其实践功效为归宿点和落脚点. 作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui

Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式::: replace 成个空格或者使用转义(推荐)... windows的文件名称无效字符.../\:* <>\"| 斜杠,反斜杠,冒号,星号,问号,左右的 尖括号,双引号,树杠...而且..."." 一个点和 ".."双点分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名 Linux的基本上只有反斜杠...