优化WebSphere
WebSphere里的profile刚配完,一般默认的heapsize即Xms与Xmx值只有256mb,而IBM WAS是几个J2EE服务器中最吃内存的机器,在布署一些EAR应用时,如果你的EAR中使用的lib即jar files较多,加载时往往会超出256mb的限制,如果你的WAS在安装完后不进行适当的优化就用来布署应用,很快就会成死机状,然后在相应的profile的目录中会留下一堆的heapdump即内存out of memory并造成了was档机后留下的dump文件。
因此在装完WAS配完profile后,请先进行适当的优化。
修改系统打开文件数(windows系统忽略)
如果你的机器为Linux/Unix,请:
调整Linux/Unix系统允许打开的最大文件数,系统默认一般为1024。
我们可以执行ulimit -n可查看这个数值。
通过vi /etc/security/limits.conf加入以下两行:
* soft nofile 300000
* hard nofile 300000
重新系统后通过ulimit -a可以查看结果
优化数据库连接池
更改Web容器线程池大小
该参数在管理控制台里的“服务器→应用程序服务器→server1→线程池”的“WebContainer”中进行设置,将“最大大小”的默认值50改成40,“最小大小”的默认值10改成40。逐一对每个成员做相应的修改。
不要勾选“允许线程分配超过最大线程大小”。
更改会话超时和启用servlet高速缓存
该参数在管理控制台里的“服务器→应用程序服务器→server1→会话管理”的“会话超时”中进行设置,将默认的30改成15;在“服务器→应用程序服务器→server1→Web容器设置→Web容器”。逐一对每个成员做相应的修改。
记得Web容器里勾选“启用servlet高速缓存”。
更改JVM参 数
即修改相应的heap size与添加一些JVM调优参数
该参数在管理控制台里的“服务器→应用程序服务器→server1→进程定义→Java虚拟机”里定义
注意:
这边的通用JVM参数就是IBM的jvm优化参数了,因为这个是IBM JDK,和ORACLE-SUN的JDK不一样的。
IBM JDK的JVM常用参数
ü -Xquickstart
此设置影响 IBM JVM 使用较低优化级别来编译类方法的方式,这将提高服务器启动速度,但会使运行时性能下降。缺省情况下,如果未指定此参数,IBM JVM 最初将使用较高的初始优化级别来执行编译。此设置能够提高运行时性能,但会减慢服务器启动速度。
缺省值: |
高初始编译器优化级别 |
建议值: |
高初始编译器优化级别 |
用法: |
-Xquickstart 可以加快服务器启动速度。 |
ü -server
基于 Sun 的 Hotspot 技术的 JVM 最初使用低优化级别来编译类方法。这些 JVM 使用简单编译器和能够进行优化的 JIT 编译器。通常情况下,使用简单 JIT 编译器。然而,可以通过设置此选项来使用能够执行优化的编译器。此更改将显著提高服务器的性能,但使用能够执行优化的编译器时,服务器的预备时间将会较 长。
缺省值: |
简单编译器 |
建议值: |
能够执行优化的编译器 |
用法: |
-server 启用能够执行优化的编译器。 |
注 意:
32位系统的JVM最大值不超过2048m,如果有充足的内存,可以多建立几个节点集群成员。
ü -Xgcpolicy
将 gcpolicy 设置为 optthruput 会禁用并发标记。如果没有暂停时间问题(表现为应用程序响应时间不规律),那么应该使用此选项来实现最大吞吐量。将 gcpolicy 设置为 optavgpause 会使用缺省值来启用并发标记。此设置将减少由正常垃圾回收所引起的应用程序响应时间不规律情况。然而,此选项可能会降低整体吞吐量。
缺省值: |
optthruput |
建议值: |
optthruput |
用法: |
Xgcpolicy:optthruput |
ü -Xnoclassgc
缺省情况下,当一个类没有任何活动实例时,JVM 就会从内存中卸装该类,但是这样会使性能下降。如果关闭类垃圾回收,就可以消除由于多次装入和卸装同一个类而造成的开销。
如果不再需要某个类,那么该类在堆中所占用的空间通常将用于创建新对象。但是,如果应用程序通过创建类的新实例来处理请求,并且该应用程序的请求是 随机出现的,那么可能会发生以下情况:先前请求者完成后,正常的类垃圾回收将通过释放这个类占用的堆空间来清除这个类,但当下一个请求出现时,又必须将这 个类重新实例化。在这种情况下,您可能想使用此选项来禁用类垃圾回收。
缺省值: |
启用类垃圾回收 |
建议值: |
禁用类垃圾回收 |
用法: |
Xnoclassgc 禁用类垃圾回收 |
下面是我本机上的一个设置,供参考:
-Xgcpolicy:gencon–Xnoclassgc
更改ORB服务
进入管理控制台里的“服务器→应用程序服务器→server1→ORB服务”,勾选“按引用传递”;线程池设置则选择“使用与线程池管理器相关联的 ORB.thread.pool 设置(建议)。”,点击“ORB.thread.pool”,修改“最小大小”的默认值10为40,“最大大小”的默认值50为40,不要勾选“允许线程 分配超过最大线程大小”。逐一对每个成员做相应的修改。
去除应用程序的类重新装入选项
进入管理控制台里的“应用程序→企业应用程序”,点击某一应用程序进入,点击“Web模块的 JSP 重新装入选项”,将“JSP启用类重新装入”的勾去掉。