[转]WebSphere环境搭建实践指南(二)

上一篇 / 下一篇  2008-12-19 14:10:26 / 个人分类:中间件

转载自:

http://tech.it168.com/jd/2007-08-23/200708230733862.shtml

4. 必要参数的调整

    在生产环境中安装WAS完毕并创建了一个可用的概要文件之后,必须根据实际情况进行必要参数的调整,以便提高WAS性能、方便错误诊断。这些参数通常要结合运行环境的实际情况、实际的并发量和服务器的资源利用情况进行调整。完整的调优涉及操作系统、应用、应用服务器和数据库的综合调整,具体要调整的参数、含义,请参见WAS资源中提到的资源监控和性能调优章节,例如,红皮书sg246392的17.5章节中明确谈到了性能调优通常涉及的参数以及调整原则。本文提出的只是针对应用服务器本身一些重要的参数调整的指导原则和经验之谈,以便读者能够快速起步:

  • Java虚拟机堆大小(JVM Heap Size): 控制JVM代码可使用的堆大小,单位M。该参数在服务器->应用程序服务器>进程定义>Java虚拟机中进行设置。JVM最大堆大小默认是256M,在生产环境中通常要根据机器物理内存情况、应用运行特性来设置,且多数情况下都要把此参数调大。根据经验,内存充足时,通常的调整在500M到1024M之间。需要注意的是,建议JVM Heap的最大值不要超过1024M,如果JVM Heap Size过大,可能会引起内存分页,或者造成JVM垃圾回收时间过长,反而影响应用服务器性能。有关Java虚拟机调优的具体信息,请参考调整JVM参数
  • Web容器线程池:该参数在“服务器 > 应用程序服务器 > server1 > 线程池”的“WebContainer”中进行设置(如图6),默认值是10到50。如果硬件资源允许,通常会把线程池的最大大小调到100。

    图 6. 调整线程池



  • 数据源连接池:该参数在资源->JDBC->数据源->数据源名称,选择“连接池设置”中设置,默认大小为1到10。根据资源设置的队列(Queue)原则,从Web容器线程池,到数据源连接池的参数设置,应该是从大到小的管道。前面我们列举了Web容器线程池的最大值设置100,对于数据源连接池,设置的最大值通常不超过50。多数情况下调整为30。实际运行中可以修改此参数值,观察调整对性能是否有正面影响。注意,如果把数据库连接池最大大小调得过大,JVM有限的资源都耗费在维护连接池、处理与数据库连接上,可能反而造成WAS性能的下降。
  • WAS 进程日志参数:WAS进程日志常用的有SystemOut.log和SystemErr.log。这两份日志默认大小为1M,历史日志文件数为1份。在生产环境中,这样的设置通常不足以充分保存发生问题时的错误信息。我们可以通过修改日志默认大小、历史日志文件数来保存更多的信息。注意,不要把单份日志文件大小设置过大(例如,超过10M以上),否则可能影响WAS性能。另外,我们建议把应用日志与WAS日志分离开。如果应用中大量以System.out.print或者System.err.print来保存应用状态日志,也可能会影响服务器性能。

    图 7. 修改WAS日志属性




  • Heapdump文件:前面我们提到,Heapdump文件对磁盘空间占用很快,因此,可以设置IBM_HEAPDUMP参数把Heapdump文件存放到指定目录下。
  • Web服务器的访问日志access.log:IBM Http Server的访问日志access.log默认是打开的,其中记录了经过Http服务器的请求信息。在高并发的系统中,这一日志增长非常过,当日志过大时,可能占用过多磁盘空间或引起性能下降,如果您的系统不需要这份日志,或者有其他技术手段保存用户访问信息,可以关闭该日志。具体做法为:打开IBM Http Server安装目录/conf目录下的httpd.conf文件,搜索CustomLog,把CustomLog所在行用#注释掉即可。

5. 常见的日常管理任务

由于生产环境访问控制的需要,搭建WebSphere环境之后,通常可能会要求修改应用访问端口,或者更改WAS管理员密码,启用/停用管理安全性等等。

5.1. 查看/更改应用服务器端口

应用服务器安装完毕之后,为了避免生产环境中的端口冲突、端口访问控制,有时我们需要查看或更改应用服务器的端口。

  • 查看端口
  • 更改应用访问端口

    默认情况下,WAS的管理控制台和应用访问是两个不同的端口。访问WAS的管理控制台或者WAS上部署的应用,所使用的端口由应用服务器端口以及虚拟主机决定。假设我们要把应用访问的端口从9080变成9082(实际工作中,如果没有Web服务器,有的环境会希望把应用访问端口变成80,方法类似),则按如下步骤进行:登陆WAS管理控制台,选择 左边菜单 服务器 - 应用服务器,点击 server1,选择“端口”,点击“WC_defaulthost”(如图8),修改端口为自己想要的任意端口(注意避免端口冲突),例如,9082。然后点击“确定”。然后“保存”。

    图 8. 修改应用访问端口


        然后,选择 左边菜单 环境 - 虚拟主机,点击”default_host”,选择“主机别名”(如图9),把原有端口9080改成与前面应用服务器/端口/WC_defaulthost一致的端口,例如,9082。或者点击“新建”,把在WC_defaulthost修改之后的端口号填入,点击“确定”、“保存”。

    图 9. 修改虚拟主机



    当然,如果你在前面应用服务器/端口/WC_defaulthost中设置的端口已经出现在虚拟主机/default_host/主机别名的列表中,则不需要做改动或者新增主机别名端口的工作。目的就是要让 应用服务器/端口/WC_defaulthost的端口出现在 虚拟主机/default_host的主机别名列表中。更改在重启WAS服务器之后生效。

  • 更改WAS管理控制台端口

    登陆WAS管理控制台,选择 左边菜单 服务器 - 应用服务器,点击 server1选择“端口”。然后更改WC_adminhost为自己希望的管理控制台端口。然后点击“确定”、“保存”。选择 左边菜单 环境 - 虚拟主机,点击;然后选择admin_host,选择“主机别名”。把原有端口9060改成与前面应用服务器/端口/WC_adminhost一致的端口,例如,9063。或者点击“新建”,创建一个主机别名 *, 9063。然后“确定”,“保存”。目的就是要让 应用服务器/端口/WC_adminhost的端口出现在 虚拟主机/admin_host的主机别名列表中。

  • 5.2. 管理安全性

    针对生产环境要求的多变性,实际WAS环境搭建中可能涉及管理安全性的多种操作。

    • 启用管理安全性

      启用管理安全性将激活用于防止未经授权的用户使用服务器的设置,简单来说,进入管理控制台、更改应用服务器配置、停止应用服务器进程这些管理任务,都需要输入预先定义的用户名和密码才能完成。缺省情况下,创建概要文件时会启用管理安全性(图9)。如果在创建概要文件时没有选择“启用管理安全性”,在随后使用过程中又希望启用,则可按如下步骤进行:

      首先进入控制台,例如:http://was_ip:9060/admin,注意这里登陆的用户一定要是设置安全性的用户。例如,admin。选择“安全性”>“安全管理、应用程序和基础结构”,然后点击“安全配置向导”(图10)。为了配置的简便性,在“指定保护范围”中,可以不选择“使用 Java 2 安全性来限制应用程序访问本地资源”;在“选择用户存储库”中接受默认选项,用户存储库为“联合存储库”,点击“下一步”;在配置用户存储库中填入用户名、密码。如果您是第一次启用管理安全性,则输入一个新的用户名(您登陆管理控制台的用户名)和密码。这个用户名密码是任意的,并不要求是操作系统用户,因为联合存储库默认的用户条目来自于文件;如果以前曾经使用该存储库启用过管理安全性,则使用存储库中持有管理员特权的用户名和密码。点击“下一步”、“完成”。保存之后重启应用服务器,这时登陆管理控制台等就需要提供您预定义的用户名/密码了。



      图 10. 配置管理安全性



    • 停用管理安全性

      停用管理控制台很简单,在图10所示页面,不选择“启用管理安全性”,点击“应用”,保存并重启应用服务器即可。有一种特殊情况下,特如忘掉了管理员密码,此时我们无法登陆管理控制台,从而无法在管理控制台中停用管理安全性。这时,可从$WAS_HOME/profiles/xxx概要文件名/bin目录下,发出如下命令: wsadmin -conntype NONE 。当wsadmin的命令行窗口出现之后,发出下列命令: securityoff 。上述操作在应用服务器启动或停止的状态都能发出。再次启用WAS时,就是停用管理安全性的状态了。

    • 更改管理员密码

      当我们需要更改管理员密码时,可以选择“用户和组”>“管理用户”,如图11,在搜索内容为“*”时点击“搜索”,会列出该存储库中的所有用户。选中管理用户标识,可更改该用户的密码。更改即时生效。

    • 停用管理安全性

      停用管理控制台很简单,在图10所示页面,不选择“启用管理安全性”,点击“应用”,保存并重启应用服务器即可。有一种特殊情况下,特如忘掉了管理员密码,此时我们无法登陆管理控制台,从而无法在管理控制台中停用管理安全性。这时,可从$WAS_HOME/profiles/xxx概要文件名/bin目录下,发出如下命令: wsadmin -conntype NONE 。当wsadmin的命令行窗口出现之后,发出下列命令: securityoff 。上述操作在应用服务器启动或停止的状态都能发出。再次启用WAS时,就是停用管理安全性的状态了。

    • 更改管理员密码

      当我们需要更改管理员密码时,可以选择“用户和组”>“管理用户”,如图11,在搜索内容为“*”时点击“搜索”,会列出该存储库中的所有用户。选中管理用户标识,可更改该用户的密码。更改即时生效。


      图 11. 管理用户



    • 忘记管理员密码

      如果忘记管理员密码,我们无法进入管理控制台更改密码。此时,需要先用“停用管理安全性”一节中wsadmin命令的方法,停用管理安全性,然后“更改管理员密码”,再次“启用管理安全性”即可。

    • 创建更多的管理用户

      使用启用管理安全性的WAS环境时,默认情况下只有一个管理员ID,这意味着同一时刻只有一个人能登陆管理控制台。这对于多人开发小组在同一WAS环境发布测试时并不方便。您可先在存储库中创建一个用户,然后为该用户ID分配相应的管理角色。具体步骤如下:1)选择“用户和组”>“管理用户”,如图24,点击“添加”,添加一个用户ID,例如,admin1。保存。 2) 选择“用户和组”>“管理用户角色”,如图25,填入用户名(必须是在存储库中已经存在的用户名),选择相应的管理角色,例如,“管理员”。点击“确定”,保存。这样,下次重启WAS时,两个用户都能同时登陆管理控制台。



      5.3. 备份/恢复概要文件

      生产环境、概要文件配置过于复杂或经常更改时,我们需要定期备份概要文件,以便必要时快速恢复。您可使用backupConfig 命令备份配置文件。例如,要备份概要文件AppSrv01的当前配置,可以从$WAS_HOME/profiles/AppSrv01/bin目录下,发出命令 backupConfig,它会将AppSrv01当前概要文件默认生成一个压缩包,您也可以指定该压缩包的名称,例如:backupConfig WebSphereConfig_2007_05_30.zip。恢复配置时,使用restoreConfig WebSphereConfig_2007_05_30.zip。

      5.4. 正确卸载WAS

      需要提醒的是,WAS的卸载过程不是直接删除目录,如果这样做,下次你可能无法在同一台机器上成功安装WAS。在卸载WAS之前,先停止机器上的WAS进程,用ps –ef |grep java确保没有was进程在运行。然后,执行WAS_HOME/uninstall/uninstall.sh命令卸载WAS。如果因为某些特殊原因卸载向导引导的卸载过程没有成功(例如,您直接删除了WAS安装目录),或者您希望在同一目录再次安装WAS,请参照信息中心“手工卸载”给出的建议。

   应用部署通常会涉及如下几个任务:配置应用所需要的环境:如系统变量、虚拟主机、类路径、安全性等等;配置应用所需要的资源如JMS资源、数据源等。其中,需要注意的是:
  • 应用打包:部署在 WebSphere 应用服务器上的应用可以是打包的*.ear/*.war文件,也可以是未打包但符合J2EE规范要求的组件。在生产环境中,推荐使用打包的*.ear/*.war文件,便于版本控制和管理。对于复杂项目中多个J2EE组件的打包,请参见文章“关于J2EE应用开发项目包的管理”。
  • 管理 Utility Jar包:大多数J2EE应用都会有一些公用的Utility Jar包,首先要强调的是:一定要避免在同一个类载入路径下存在同一个类的多个版本!这会在实际运行中带来很多莫名其妙且难以诊断的问题。其次,对于JDBC驱动这类通用等级较高的Utility Jar包,可以放置在<WAS_HOME>/lib/ext目录下;对于多个应用共享的Utility Jar,可以放在 <WAS_HOME>/lib/ext中,也可以放在shared library(共享库)中,推荐放在shared library中;对于单个应用使用的Utility Jar,可与应用打包在一起,或放入shared library中。共享库的使用能够避免Utility Jar包多个版本的混乱,以及Utility Jar包的冲突。共享库配置方法请参见红皮书sg247304 12.5.4 Step 4: Sharing utility JARs using shared libraries章节。
  • Jar 包冲突:Jar包冲突问题在大型Java软件开发中经常遇到,简单的说,当不同应用使用的公用Utility Jar包、应用服务器底层的Jar包中存在同名、且版本不同的类时,我们称之为Jar包冲突。这种问题的解决办法可以参考文章如何在WebSphere中解决Jar包冲突
  • 会话超时:针对应用场景的不同,不同应用期望的会话超时时间各不相同。WebSphere应用服务器的会话管理分为Application server、Application、Web Module三个级别。顾名思义,在每个特定级别上更改的会话管理的配置,对当前级别起作用。部署在WebSphere应用服务器上的应用,默认的会话超时时间为30分钟,默认的会话管理级别是Application Server。如果您期望更改您的应用,例如,DefaultApplication的会话超时时间,可按如下步骤进行:选择应用程序>应用程序名>会话管理(图13),选择“覆盖会话管理”,并在“设置超时”中填上期望的会话超时时间。点击“确定”保存即可。





        当应用需要通过写Java环境变量的方式配置一些变量时,可在应用服务器启动脚本中用-D参数指定,也可以在应用程序服务器 > 应用程序服务器名(例如,server1) > 进程定义 > Java 虚拟机中设置“通用JVM参数” -Daaa=xxx。

    7. 结束语

        当在WAS环境中遇到问题时,最方便的是利用网上资源查阅相关资料。这方面的文章已经太多,为了达到本文的目标:“为初级用户提供一个尽量完整的快速入门指南”,我不得不在这里老调重谈,请参照从何学习 WebSphere?了解WebSphere应用服务器的常用网上资源。

        了解WAS的过程是渐进式的,希望这篇文章能够在WAS安装示例文档和用户的WebSphere生产环境搭建实践之间提供一个过渡,节省您的时间。从工程师的角度看,遇到问题不是坏事,遇到问题越多,经验越多,查阅资料,并通过多种渠道获得IBM的技术支持,相信您对WAS的使用体验会更加美妙。


TAG: 中间件

 

评分:0

我来说两句

Open Toolbar