WebLogic_Server性能调优
WebLogic_Server性能调优是指对WebLogic Server进行调整和优化,以提高其性能和效率。以下是WebLogic_Server性能调优的一些关键点:
J2EE 应用程序体系结构
在J2EE应用程序中,存在着多个层次,包括Presentation Layer、Business Layer、Data Layer、Hardware/Network、O/S、JVM、WebLogic Server、J2EE API等。每个层次都可能存在性能瓶颈。
性能瓶颈
在J2EE应用程序中可能出现的性能瓶颈包括:
* 应用程序中 Explicitly managing threads and overusing sleep()
* Singleton class with synchronized statement
* Poor coding
* 应用服务器的request-handling threads是否足够
* 垃圾回收
* 数据库连接池的数量
* 数据库服务器
* 共享数据
* 不必要的严格隔离级别
* 客户端到应用服务器的连接
* 业务方法、远程垃圾回收、保持活动流量
* 应用服务器到数据库的连接
优化J2EE应用程序
为了优化J2EE应用程序,需要在开发阶段进行优化,包括:
* 架构和应用程序设计方面的优化
* 程序代码方面的优化
* 应用程序的单元测试
* 发现应用程序存在的瓶颈
* 部署方面的优化
* OS/JVM/Application Server的优化
* 数据库/网络的优化
* 系统测试和基准测试
* 发现系统级存在的瓶颈
Common Sense
在性能和灵活性之间寻找平衡点!遵循80-20原则:20%的代码使用80%的资源,20%的代码执行80%的时间。遵循KISS法则:Keep It Simple & Small!使用独立的资源池,减少不必要的分布式事务和操作,将多个SQL语句操作推送到数据库级别。
使用Pool资源
尽量使用Pool资源,包括:
* JDBC Connection Pool
* Socket Pool
* Object Pool
* Thread Pool
Servlet & JSP
* 在Servlet到Servlet的调用中,forward()比sendRedirect()性能要好一些
* 尽量避免跨越JVMs调用EJB,不要在一个JVM中调用其它JVM中的EJBs
* 尽量避免在Servlet/JSP中定界事务
* Servlets在缺省情况下是单线程的,是线程不安全的
* 如果使用单线程Servlet,,最好分配大量的Pool来处理服务请求
* 最好使用HttpSessions来管理用户数据
HttpSession
* Session管理会造成额外开销
* 建议使用setAttribute()来保存粗粒度对象
* 不要使用很大的HttpSession对象
* 如果需要复制Session,需要注意相关问题