`
microjava
  • 浏览: 318620 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

WAS 调优之路(一)

阅读更多
2003 年 11 月 01 日

部署在WAS上的J2EE应用程序,其性能是由多个因素决定的。例如网络、数据库、内存分配、WAS服务器的配置以及应用程序的设计。本文主要讲述了WAS性能优化的一些常见因素和通用方法。
概述


部署在WAS上的J2EE应用程序,其性能是由多个因素决定的。例如网络、数据库、内存分配、WAS服务器的配置以及应用程序的设计。本文主要讲述了WAS性能优化的一些常见因素和通用方法。

在本文开始前,我想说的是,性能调优不是起死回生的灵丹,好的性能源自好的代码设计。一般说来,性能调优大概可以提高10%-40%效率,而糟糕的代码设计却会使得性能几倍的下降。

队列(Queue)的性能调优


对于一个标准的J2EE应用,一个请求到来时,往往需要经过多次转发:网络->Web服务器Web容器->EJB容器->数据库。而每一次转发,都可能造成请求处理的瓶颈,使得应用程序整体性能下降。

本文中,我们把每一次转发的待处理资源都看成一个队列,如图一:


图一:WAS队列


对于WAS调优,要记住的一个基本原则就是,使得在队列中等待的请求的数量最小化。在实践中我们发现,为了达到这个目的,最有效的配置方式就是使得队列成为一个"漏斗"。也就是说,越靠近客户端的队列,其容量越大,而后面的队列,其容量要略小于或等于前面的队列。

让我们举个例子来说明一下,现在有200个并发用户请求到达。

首先,我们要设置的是WebServer的最大并发用户,这个设置是在conf/httpd.conf这个文件里面配置的。在Unix系统中,对应的属性是MaxClient;在Windows系统中,对应的属性是ThreadsPerChild。如图二:我们设置ThreadsPerChild75:


图二:Http服务器并发用户配置




其次,我们要设置Web Container的最大并发用户,Web Container维护着一个线程池,用来处理接受到的jsp/servlet请求,我们将依次点击Servers->Application Servers,然后选择需要的server,接着点击Additional Properties->Web Container->Thread Pool,如图三,我们将设置相应的线程池大小,把最大值设为50:


图三:Web容器线程池配置




然后,我们要来设置对象请求代理(ORB)的线程池大小。我们将依次点击Servers->Application Servers,然后选择需要的server,接着点击Additional Properties->ORB Service->Thread Pool,如图四,在这里我们将可以设置线程池的大小,把最大值设为50;同时,在这里也可以设置线程池自增长功能,点选Growable thread pool选项,使得即使设置了最大的线程池大小,当并发的EJB请求过多,线程池的大小还是可以超过预先设置的最大值。


图四:ORB线程池配置




最后,我们还要来设置数据库的连接池属性。在Resource项下面,点击JDBC Providers->DB2 JDBC Provider->Data Source,选择对应的JDBC连接,进入Connection Pools选项,在这里可以设置数据连接池的最大和最小值,我们将把最大值设置为25,如图:


图五:JDBC线程池配置




做了这么多修改后,千万不要忘记保存设置。如下图,点选Save后会出现一个确认窗口,让你确定是保存所有修改还是放弃所作修改。


图六:保存配置的修改




到目前为止,我们所有的操作都遵循一个原则,那就是让并发用户的等待尽可能停留在网络传输和Web服务器上,而让所有到达WebSphere应用服务器的客户请求能够很快的被执行。经过我们的配置,用户消息到达后,形成的队列如图七所示:


图七:Was 队列等待




JVM堆参数设置的性能调优


可以在WAS中配置JVM的堆大小。对于不同的应用程序,最优化堆大小的设置都有可能不同。堆设置过大,会占用过多的内存,使内存资源耗尽,从而会频繁的进行IO操作来使用虚拟内存。堆设置过小,会使得对象可分配空间变小,从而会频繁的使用垃圾收集机制来释放内存空间,而每次垃圾收集,都会耗用一定的系统资源。应此,我们要通过试验和监控数据,设法使的我们所设置的堆大小能够使得我们的程序运行最优化。我们将依次点击Servers->Application Servers,然后选择需要的server,接着点击Process Definition->Java Virtual Machine,如图,在这里我们就可以设置初始堆大小和最大的堆大小。


图八:Java虚拟机内存堆设置




ORB参数调用方式的性能调优


在EJB1.1的规范中,要求远程方法一律使用参数值传递方式来调用,即在每次方法调用的时候,把参数的值Copy入调用堆栈。这样,如果参数对象比较大的话,这么做的代价无疑是很昂贵的。如果调用EJB的Servlet或者其它EJB是部署在同一个应用服务器下,那么它们是共享一个JVM的,也就是说可以使得函数调用的方式变为参数引用传递,这样的话,视参数对象的复杂程度而定,可以提高5%-50%的函数调用效率。我们将依次点击Servers->Application Servers,然后选择需要的server,接着点击Additional Properties->ORB Service,如图九,我们可以通过点击 Pass by reference 选项来调整ORB的参数传递方式


图九:ORB引用方式的修改




关于上面的调优,我们要注意两点:

1. 当传递的参数是原始数据类型,如int,char,那么性能不会得到优化。

2. 如果参数接收者对参数进行修改,那么使用参数引用传递会带来很多意想不到的问题。为此,IBM开发了一个工具CmpOPT,用来测试使用参数引用传递方式调用一个EJB是否安全。这个工具的相关帮助文章可以在 http://www.ibm.com/developerworks/ibm/library/i-optimize上看到。


关闭动态加载开关


动态加载是一个很有用的功能,它可以使得我们在程序运行的时候动态更新servlet文件,web容器能够自动识别这种更新,并且重新载入新的servlet类。在我们进行程序的调试和开发时,这项技术能够给我们带来很大的方便,避免了我们频繁的重启应用服务。但是,这种方便性是以牺牲性能为代价的,服务器为了监视文件是否更新,需要耗费一定的系统资源。而对部署的程序来说,一般程序不会进行改动了,因此,我们应该把这个开关关闭。

在Applications项下面,点击Enterprise Applicaton,选择一个应用程序,然后把Enalbe class reload选项取消:


图十:动态加载设置




关闭会话序列化


WAS可以把会话信息序列化存入数据库,对于集群和克隆的WAS服务器来说,这一特性是建议启用的。与在内存中保存会话信息相比较,启用这一特性会降低WAS的性能。因此,如果你不想持久化你的会话,可以把该选项关闭。在Applications项下面,点击Enterprise Applicaton,选择一个应用程序,然后在其它属性里面选择Session Manage,在配置的最后一行点选其它属性->分布式环境设置,然后可以选择是否在数据库中保存会话:


图十一:会话持久化设置




小结


本文是WAS调优系列的第一部分,主要讨论了利用WAS服务器参数的调整来优化应用程序的性能。在接下来的部分,我们将会讨论如何通过控制代码的质量来提高基于WAS的应用程序的性能以及如何利用Tivoli来监控系统的性能,诊断程序运行的瓶颈,从而对参数做出相应调整来提高系统性能。

  • 大小: 12.2 KB
  • 大小: 17.4 KB
  • 大小: 10.8 KB
  • 大小: 10.9 KB
  • 大小: 15.2 KB
  • 大小: 3.5 KB
  • 大小: 8.6 KB
  • 大小: 15.9 KB
  • 大小: 16.5 KB
  • 大小: 37.7 KB
  • 大小: 17.7 KB
分享到:
评论

相关推荐

    WAS V8.5 for Linux 安装以及性能调优概要

    WAS V8.5 for Linux 安装以及性能调优概要 WAS V8.5 for Linux 安装是指在 Linux 操作系统上安装 WebSphere Application Server V8.5 的过程。性能调优是指对 WAS 服务器的性能进行优化,以提高服务器的运行效率和...

    WAS性能调优对jvm、线程数、ORB大小的配置

    本文将深入探讨“WAS性能调优对jvm、线程数、ORB大小的配置”这一主题。 首先,我们要理解JVM(Java Virtual Machine)在WAS中的作用。JVM是Java程序运行的平台,它的性能直接影响到应用的响应时间和资源利用率。在...

    WAS性能调优的培训资料

    ### WAS性能调优的核心知识点 #### 一、IBM WebSphere Application Server (WAS) V6 性能概览 IBM WebSphere Application Server (WAS) V6 是一款高性能的企业级应用服务器,它提供了丰富的功能来支持Java应用程序...

    JAVA虚拟机性能参数调优指导书

    在现代企业级软件开发领域,Java作为一种主流编程语言,其虚拟机(JVM)的性能调优成为提升应用程序效率的关键环节。Java虚拟机性能参数调优不仅关乎软件的运行速度,更直接影响到系统的稳定性和资源利用率。本文...

    WAS性能最佳调整(实际运用总结经验)

    在IT领域,特别是Java应用服务器的管理中,WebSphere Application Server (WAS)的性能调优是一项至关重要的任务,它直接影响到应用程序的响应速度和整体效率。本篇文章将从三个方面探讨WAS性能优化的关键点:JVM参数...

    WAS和DB2调优.doc

    一、WebSphere Application Server(WAS)调优 1. JVM调整:JVM是Java应用程序的基础,对于WAS来说至关重要。在"应用程序服务器" -> "server1" -> "进程定义" -> "Java虚拟机"中,设置适当的初始大小和最大堆内存。...

    was应用部署、JNDI、应用调优;IHS部署

    WebSphere Application Server (WAS) 是 IBM 提供的一款高性能的企业级应用服务器,用于部署 Java EE 应用程序。在部署 WAS 的过程中,涉及到了诸如 JDBC 提供程序配置、数据源配置、虚拟主机别名设置、企业应用安装...

    性能参数调优

    在描述中,我们得知针对高消耗SQL的排查没有发现显著问题,但进行了脚本参数调优以解决数据字段值过长导致的错误,这表明在应用层面对SQL语句进行优化是提高性能的关键步骤之一。JDBC连接数的调整表明了在多用户环境...

    针对WAS6.1,对线程数、jvm,日志以及数据库连接进行性能调优

    针对 WAS 6.1 的性能调优策略 在本文中,我们将讨论针对 WAS 6.1 的性能调优策略,涉及到线程数、JVM、日志和数据库连接等方面的优化。 一、线程数优化 在 WAS 6.1 中,线程数的设置对性能的影响非常大。我们可以...

    WAS V8.5 for AIX 6.1 安装以及性能调优概要

    WAS V8.5 for AIX 6.1 安装以及性能调优概要

    WAS_V7_for_AIX_5.3_安装以及性能调优

    综上所述,WAS_V7_for_AIX_5.3的安装与调优不仅涵盖了系统的初始化配置、网络与文件系统参数的优化,还深入到Web容器、线程池、JVM层面的细节调整,旨在构建一个高效、稳定、安全的应用服务器环境。这一过程要求操作...

    weblogicTomcatWebsphere调优方法

    总结来说,WebLogic、Tomcat和WebSphere的调优是一个持续优化的过程,涉及到多个层次的参数调整,包括服务器配置、JVM设置、应用部署描述符和连接池管理等。每个服务器都有其独特的调优策略,需要根据实际应用需求和...

    WAS集群、IHS、WAS操作概述.doc

    #### 四、WAS调优 - **调优策略**:针对不同场景和需求制定调优策略,以提高WAS的整体性能。 #### 五、性能监控 ##### 5.1 从性能监视基础结构(PMI)定制查看参数 - **PMI**:提供了一套详细的性能监控指标,...

    xxx银行系统-WebSphere-was8.5原厂安装配置调优实战手册

    《xxx银行系统-WebSphere-was8.5原厂安装配置调优实战手册》是一本专注于IBM WebSphere Application Server 8.5在银行系统中的实践操作指南。WebSphere,简称WAS,是IBM推出的一款强大的企业级应用服务器,它支持...

    WAS8系统管理、运维、调优手册

    WAS8系统管理、运维、调优手。 经典的JVM异常分析。

    天工计划--WAS V7 for AIX 6.1 安装以及性能调优概要

    ### WAS V7 for AIX 6.1 安装与性能调优概要 #### 一、环境配置与准备 **环境配置信息:** - **机器名称/IP地址**:192.168.0.100 - **用户名/密码**:root/root - **操作系统版本**:AIX 6.1 with Recommended ...

    WAS和DB2调优(参数配置)中文2.1MB最新版本

    本书主要讲述了WAS和DB2调优(参数配置);感兴趣的朋友可以过来看看

    DB2和WAS性能问题的发现和处理

    ### DB2和WAS性能问题的发现和处理 #### 一、引言 在现代的J2EE应用系统中,确保高性能和稳定性至关重要。随着软件架构的不断进步,开发人员越来越关注程序的良好结构化和框架化,这在一定程度上减少了程序逻辑...

    WAS7或WAS8性能优化

    JVM是WAS运行的基础环境之一,因此其性能直接影响到整个应用的表现。JVM调优主要包括以下几点: 1. **内存设置**:合理设置堆内存大小对于防止Out of Memory Error至关重要。通常,需要根据应用的复杂度和数据量来...

Global site tag (gtag.js) - Google Analytics