WebLogicServer性能及调整-调整Web应用程序以下部分包含调整Web应用程序和管理会话的BEA最佳实践:最佳实践会话管理最佳实践禁用页面检查使用自定义JSP标记预编译JSP使用服务级协议相关内容禁用页面检查可以通过禁用Servlet和JDP页面检查来提高性能。将以下每个参数都设置为-1:pageCheckSecondsservlet-reload-check-secsServlet重新加载检查它们是生产模式的默认值。使用自定义JSP标记BEA提供了三个可以在JSP页中使用的专用JSP标记:cache、repeat和process。这些标记打包在名为weblogic-tags.jar的标记库jar文件中。此jar文件包含这些标记的类和标记库描述符(TLD)。要使用这些标记,请将此jar文件复制到包含JSP的Web应用程序中,然后引用在JSP中的标记库。请参阅“开发WebLogicServer的Web应用程序、Servlet和JSP”中的使用自定义WebLogicJSP标记(cache、process和repeat)。预编译JSP通过在weblogic.xml部署描述符的jsp-descriptor元素中将预编译参数设置为true,可以配置WebLogicServer为在部署或重新部署Web应用程序时,或者在WebLogicServer启动时预编译JSP。为避免每次服务器启动和定位其他服务器时都重新编译JSP,请使用weblogic.jspc预编译它们,然后将它们放在WEB-INF/classes文件夹中,并归档在.war文件中。将源文件保留在与归档的.war文件分开的独立目录中能够消除因JSP依赖其中的一个类文件而引起错误的可能性。有关如何避免JSP重新编译的完整说明,请参阅AvoidingUnnecessaryJSPCompilation。使用服务级协议应该基于应用程序所需的服务级协议,将Servlet和JSP分配给工作管理器。请参阅线程管理。相关内容“开发WebLogicServer的Web应用程序、Servlet和JSP”中的Servlet最佳实践。ServletandJSPperformancetuning,作者:RahulChaudhary(来自JavaWorld),时间:2004年6月。会话管理作为一般规则,应该优化应用程序,以便让它在处理会话持久性和会话时执行尽可能少的任务。以下部分提供了有关如何设计适合您的环境和应用程序的会话管理策略的信息:管理会话持久性最小化会话聚合会话数据管理会话持久性WeblogicServer提供了五种会话持久性机制,它们可以满足不同的应用程序要求。这些会话持久性机制可以在Web应用程序层进行配置。为应用程序选择哪种会话管理策略取决于一些实际因素,如HTTP会话大小、会话生命周期、可靠性和会话故障转移要求。例如,没有故障转移要求的Web应用程序可以作为单个基于内存的会话来维护,而带有故障转移功能的Web应用程序可以基于其生命周期和对象大小,作为复制的会话或基于JDBC的会话来维护。纯粹就性能而言,与基于JDBC的会话状态持久性相比,内存中的会话持久性总体来说是较好的选择。根据SessionPersistencePerformanceinBEAWebLogicServer7.0的作者所述:“尽管所有会话持久性机制必须处理数据序列化和反序列化的开销,但是,数据库交互的其他开销将影响基于JDBC的会话持久性的性能,使其性能低于内存中复制”。但是,内存中会话持久性要求使用WebLogic群集,所以,在单服务器环境中无法使用。另一方面,使用基于JDBC的持久性的环境不需要使用WebLogic群集,并且可以在数据库中在较长的时间内维护会话状态。提高基于JDBC的会话持久性的一种方法是优化代码,以便让它具有尽可能高的会话状态持久性粒度。可以提高基于JDBC的会话持久性的总体性能的其他因素包括:数据库的选择、正确的数据库服务器配置、JDBC驱动程序和JDBC连接缓冲池配置。有关管理会话持久性的详细信息,请参阅:“BEAWebLogicDevelopersJournal”中的SessionPersistencePerformanceinBEAWebLogicServer7.0提供了对WebLogicServer支持的五种会话持久性机制的深入比较。“使用会话和会话持久性”中的配置会话持久性。“使用WebLogicSever群集”中的HTTP会话状态复制。“组装和配置Web应用程序”中的使用数据库进行持久性存储(JDBC持久性)。最小化会话配置WebLogicServer管理会话的方式是调整应用程序以获得最佳性能的关键部分。请考虑以下几点:使用会话涉及可伸缩性平衡。谨慎使用会话。换句话说,仅在状态不能实际保存在客户端或者需要URL重新编写支持的情况下使用会话。例如,仅将少量状态(如用户名)直接保存在cookies中。还可以编写包装对象类以“获取”和“设置”这些Cookie,以便简化Servlet开发人员在同一项目上的工作。将频繁使用的值保存在本地变量中。有关详细信息,请参阅“使用会话和会话持久性”中的设置会话管理。聚合会话数据本部分提供有关聚合会话数据的最佳实践。WebLogicServer根据属性跟踪和复制会话中的更改,所以应该做到以下几点:将先后更改的会话数据聚合到单个会话特性中。将频繁更改的会话数据和只读会话数据聚合到单独的会话特性中例如:如果使用包含所有会话数据的单个大特性,并且仅有其中的10%数据有所更改,则必须复制整个属性。这会导致不必要的序列化/反序列化和网络开销。应该将这10%的更改会话数据移动到单独特性中。