疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

影响j2ee性能的几大问题


 

  作者是一个有10年经验的高级系统架构师,他的主要专业领域中,中间件和虚拟机技术。他在性能优化与推广方面也有很深的见解,接下来他将分享一些共同的10个影响应用程序的性能问题。

  1。缺乏正确的容量规划

  容量规划是一个全面的发展过程和标准,预测当前和未来的环境容量需求。制定合理的产能规划将不仅保证和跟踪当前生产能力和稳定性,同时也将确保新项目风险最低部署到现有的生产环境。硬件,中间件,虚拟机,调整项目应该准备部署之前。

  2。j2ee中间件环境规范不足

  “没有规矩,没有方圆”。其次受欢迎的原因是应用程序的中间件或基础设施不标准。在最初的项目,新平台上面有不合理的标准,使系统的稳定性较差。这将增加客户的成本,所以花时间制定合理的应用程序的中间件环境规范是必须的。这项工作应该和初始容量规划联合迭代。

  3.Java虚拟机垃圾回收过度

  各位对“java.lang.OutOfMemoryError”这个错误信息是不是很熟悉呢?由于JVM的内存空间过度消耗(Java堆、本机堆等)而抛出的异常。

  垃圾收集问题并不一定会表现为一个OOM条件,过度的垃圾收集可以理解成是JVM GC线程在短时间里进行轻微或超量收集集合数据而导致的JVM暂停时间很长和性能下降。可能有以下几个原因:

  1.与JVM的负载量和应用程序内存占用量相比,Java堆可能选择的太小。

  2.JVM GC策略使用不合理。

  3.应用程序静态或动态内存占用量太大,不适合在32位JVM上使用。

  4.JVM OldGen随着时间推移,泄漏越来越严重,而GC在几个小时或者几天后才发现。

  5.JVM PermGen空间(只有HotSpot VM)或本机堆随着时间推移会泄露是一个非常普遍的问题;OOM的错误往往是观察一段时间后,应用程序进行动态调动。

  6.YoungGen和OldGen的比例空间与你的应用程序不匹配。

  7.Java堆在32位的VM上太大,导致本机堆溢出,具体可以表现为OOM试着去链接一个新的Java EE应用程序、创建一个新的Java线程或者需要计算本地内存分配任务。

  建议:

  1.观察和深入理解JVM垃圾回收。启动GC,根据健康合理的评估来提供所有的数据。

  2.记住,GC方面的相关问题不会在开发中或者功能测试时发现,它需要在多用户高负载的测试环境下发现。