http://www.blogjava.net/supperchen/archive/2008/07/03/212226.html
一、websphere参数设置及性能调优
1、应用程序服务器 > server1 > Web容器->线程池
Web 容器用来设置最大并发用户,它维护着一个线程池,用来处理接受到的jsp/servlet请求。
2、应用程序服务器 > server1 >ORB服务->线程池
对象请求代理(ORB)可以设置线程池的大小;同时,在这里也可以设置线程池自增长功能,点选“可增长线程池”选项,使得即使设置了最大的线程池大小,当并发的EJB请求过多,线程池的大小还是可以超过预先设置的最大值。
3、应用程序服务器 > server1 >ORB服务
在EJB1.1规范中,要求远程方法一律使用参数值传递方式来调用,如果调用EJB的Servlet或者其它EJB是部署在同一个应用服务器下,那么它们是共享一个JVM的,也就是说可以使得函数调用的方式变为参数引用传递,这样的话,视参数对象的复杂程度而定,可以提高5%-50%的函数调用效率。我们可以通过点击“按引用传送” 选项来调整ORB的参数传递方式。
4、应用程序服务器 > server1 >Web容器->定制属性
MaxKeepAliveConnections:表示系统同时保存的最大连接个数,超过这一个数时最近最少被使用的连接将被关闭,整型,缺省值是:300;
MaxKeepAliveRequests:客户端请求被保持到一个请求队列,此属性用于决定请求队列可保持的最大客户端请求数,整型,缺省值是:100;
5、应用程序服务器 > server1 >进程定义>Java 虚拟机->初始堆大小
Java
(1)选定应用程序服务器的
(2)指定
(3)将起始
(4)如果机器上只有一个应用程序服务器,则将最大
128
256
512
6、JDBC 提供程序 > Sybase JDBC Driver>数据源 > 语句高速缓存大小
将预备语句高速缓存大小设置为等于已配置数据源连接最大数目。
7、JDBC 提供程序 > Sybase JDBC Driver>数据源 > 连接池
最小连接数:连接池保持的最小备用物理连接数。当连接池中的备用物理连接被分配给客户请求后,连接池中的备用物理连接的实际数量小于此数时,应用服务器将建立新的物理连接到连接池中备用。
最大连接数:连接池保持的最大备用物理连接数。当应用程序完成对连接的操作,应用程序所使用的物理连接被返回到连接池中作为备用连接,当连接池中的实际备用物理连接的实际数量大于此数时,应用服务器将关闭此物理连接。
8、资源 -> WebSphere JMS提供程序->WebSphere队列连接工厂->点击所创建的工厂->配置->连接池
JMS 应用程序通过“队列连接工厂”创建队列连接来与 JMS 提供程序通信。WebSphere ApplicationServer 对这些连接进行池化以提高 JMS应用程序的性能。连接池避免了与消息传递中间件连接(以及后面的断开连接)时的性能开销。
当应用程序调用 QueueConnectionFactory.createQueueConnection()时,应用服务器将检查连接池中是否有连接到工厂使用的队列管理器的空闲连接可用。如果发现空闲连接,则将其标记为 in use并返回给应用程序。如果池中所有连接都在使用中,或者 createQueueConnection()方法首次在连接工厂上调用,则会创建一个新的连接并返回给应用程序。连接池将维护此新连接的引用,并将其标记为“in use”。
如果池中总连接数达到最大,则 QueueConnectionFactory.createQueueConnection()方法将等待“in use”连接变为可用。对于这种情况,该方法等待连接的最大等待时间是由连接池的连接超时属性指定的
9、资源 -> WebSphere JMS提供程序->WebSphere队列连接工厂->点击所创建的工厂->配置->会话池
队列会话是使用 QueueConnection.createQueueSession()方法从队列连接创建的。为了提高性能,这些会话也维护在一个池中(会话池)。
每个队列连接都有一个与之相关联的会话池。这意味着,如果在连接池中最多有两个连接,在会话池中最多有四个会话,则对于此队列连接工厂可以有多达八个会话;也意味着,对于此队列连接工厂,每个连接最多只有四个会话。
原因:这个值说明是否保持客户与HTTP SERVER的连接,如果设置为ON,则请求数到达MaxKeepAliveRequests设定值时请求将排队,导致响应变慢。
方法:打开 ibm http server安装目录,打开文件夹conf,打开文件httpd.conf,查找KeepAlive值,改ON为OFF,其默认为ON
2,更改http server的配置文件参数ThreadsPerChild值到更大数目,默认为50
原因:服务器响应线程的数量
方法:打开ibm http server安装目录,打开文件夹conf,打开文件httpd.conf,查找ThreadsPerChild值,默认为50,改到更大数目,视用户数多少而定,一般改到客户机数量的1.1倍,如200台,则设为
3,关闭http server日志纪录
原因:http server的日志IO影响性能
方法:打开ibm http server安装目录,打开文件夹conf,打开文件httpd.conf,查找CustomLog值,找到没有注释的那行(行的开头没有符号"#"),将那行用符号"#"注释掉,以关闭日志纪录,提高处理性能。
4,更改Websphere的服务器处理线程数
原因:线程的数量影响同时并发的请求数量
方法:打开 管理控制台,依次打开目录树,服务器->server1->web容器->线程池,修改"最大大小"的值,默认是50,改到更大数目,具体视总用户数量和机器的配置而定,一般设置其等于或小于http server设置的MaxKeepAliveRequests的值。
服务器->应用程序服务器->server1->进程定义->Java 虚拟机初始堆大小 128最大堆大小 512线程池:
服务器->应用程序服务器->server1->进程定义->Web 容器->线程池
最小大小 20
最大大小 100
最小/最大=1/5
数据源连接池:
资源->JDBC 提供程序->(作用域选择服务器,应用)Sybase JDBC Driver->数据源->sybase->连接池 最大连接数 30
最小连接数 10
下配置仅供参考,实际中还需要根据项目情况和硬件环境而定! 以下调整在 WebSphere Application Server 的管理控制台进行。
进程定义 - Java 虚拟机:
-- 将“初始堆大小”和“最大堆大小”设为相同的值。在有 2GB 内存的系统中,建议设为 512MB。在有 4GB 内存的系统中,建议设为 768MB。
-- 垃圾回收:在“Java 虚拟机”设置中,“一般 JVM 自变量”中设置“-Xnoclassgc”参数。
Web 容器:
-- 将进程优先级从20改为0,这样 会比应用程序服务器有更高的优先级。进程优先级可以在 “server1”-“进程定义”-“进程执行”中修改。
-- 将 “Web 容器”-“线程池”的大小设为 100,并选中“允许线程分配超过最大线程大小”
-- 在“会话管理”中将“会话超时”时间从 30 分钟改为 15 分钟
JDBC 数据源:
-- 将每个数据源的“语句缓存大小”设置为 0
JDBC 连接池:
-- JDBC 连接池大小设置为 100
-- 在数据库服务器上做相应的修改(在 DB2 中是 MAXAPPLS)
针对数据库服务器的调整:
-- 数据库的磁盘空间应无限制
字符编码
--默认为gb2312,复杂的中文不支持“犇”,“暟”
在JVM配置-Dfile.encoding=GBK