WebLogic调优参数配置
- 格式:docx
- 大小:34.97 KB
- 文档页数:15
Weblogic10.3_Windows优化设置优化说明: (2)一、Weblogic服务程序设置: (2)1、设置JDK内存: (2)2、设置线程数: (3)3、Weblogic数据库连接池连接数设置: (3)4、Weblogic的服务设置[配置\优化]: (4)二、Windows服务器设置: (4)1、修改最高端口号和TCP/IP释放连接时间: (4)三、Oracle数据库设置: (5)1、Oracle线程数设置: (5)优化实例: (5)一、Weblogic10.3_Windows集群布署 (5)1、机器配置: (6)2、Weblogic优化设置: (6)二、Weblogic10.3_Windows单机布署 (7)1、机器配置: (7)2、Weblogic优化设置: (7)优化说明:一、Weblogic服务程序设置:1、设置JDK内存:修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd文件:修改前:if "%JAVA_VENDOR%"=="Sun" (set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512mset WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m) else (set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512mset WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m)set MEM_PERM_SIZE_32BIT=-XX:PermSize=48mset MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m修改后:if "%JAVA_VENDOR%"=="Sun" (set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx1024mset WLS_MEM_ARGS_32BIT=-Xms512m –Xmx1024m) else (set WLS_MEM_ARGS_64BIT=-Xms1024m –Xmx1024mset WLS_MEM_ARGS_32BIT=-Xms1024m –Xmx1024m)set MEM_PERM_SIZE_32BIT=-XX:PermSize=128mset MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m说明:红色字体为修改的内容,具体修改值根据实际物理内存确定∙-Xmx3550m:设置JVM最大堆内存为3550M。
weblogic性能优化的相关设置为得到高性能的吞吐量,把Java堆的最小值与最大值设为相等。
如:"%JAVA_HOME%\bin\java" -hotspot -Xms512m -Xmx512m-classpath %CLASSPATH% -在一个WebLogic域中,配置文件(config.xml)位于与管理服务器通信的机器里,提供WebLogic MBean的长期存储。
管理服务器作为连接的中心点,为服务实例与系统管理工具提供服务。
域也可以包括其他的WebLogic实例,称之为从服务,主要为应用程序提供服务。
ExecuteQueue//执行队列缺省处理线程数ThreadsIncrease //线程增量,以支援溢出,减缓执行队列的负荷量ThreadsMaximum //处理中的最大线程数Execute Queues默认的执行线程为15。
默认的执行线程为25。
如果你不配置额外的执行队列,并且指定应用给这些队列,web 应用程序和RMI 对象就使用默认的队列weblogic.kernel.default。
注意;如果自带的执行包没有在你的平台上使用,你可能需要调整默认的执行队列线程数和担任socket读的线程的百分比,去实现最佳性能。
为了给执行队列决定一个理想的线程数,当队列中所有应用程序都运行在最大负荷的情况下,监视队列的吞吐量。
增加线程数,重复负载测试,直到达到最佳的吞吐量。
(在某些情况下,增加线程数将产生足够多的上下文转换程序,使得队列中的吞吐量开始减少。
)注意:WebLogic管理控制台显示的是所有服务器执行队列累积的吞吐量。
设置理想的执行队列的线程数,我们可以启动管理控制台,在域(如:mydomain)> 服务器 > server实例(如:myserver)> 监视 > 性能中监控最大负载时执行队列的吞吐量和队列中的等待请求数,据此确定理想的数值。
WebLogic Server 8.1调优操作指导书拟制: Prepared by 杨机智59949日期:Date2006-11-07审核: Reviewed by 日期:Date审核: Reviewed by 日期:Date批准: Granted by日期:Date华为技术有限公司Huawei Technologies Co., Ltd.版权所有侵权必究All rights reserved修订记录Revision record目录Table of Contents1操作系统调优 (8)1.1操作系统调整 (8)1.2Linux相关参数调整 (8)1.3Windows相关参数调整 (9)2应用服务器调优 (9)2.1JVM调优 (9)2.1.1垃圾收集和堆大小 (9)2.1.2jRockit调优 (10)2.2Server调优 (11)2.2.1尽量使用本地I/O库 (11)2.2.2调整默认执行线程数 (12)2.2.3调整连接参数 (13)2.2.4创建新的执行队列 (14)2.3JDBC调优 (15)2.3.1调整连接池配置 (15)3性能监控和性能分析 (17)3.1性能瓶颈 (17)3.2操作系统监控 (17)3.3数据库监控 (18)3.4WebLogic监控 (19)3.4.1JVM监控 (19)3.4.2Console监控 (19)4常见问题解决方法 (20)4.1Apache出现连接拒绝 (20)4.1.1现象描述 (20)4.1.2原因分析 (20)4.1.3处理方法 (20)4.2启动Apache提示MaxClients超过服务器最大限制 (21)4.2.1现象描述 (21)4.2.2原因分析 (21)4.2.3处理方法 (21)表目录List of Tables表1 XX表Table 1 XX (21)图目录List of Figures图1 XX图Figure 1 XX (22)WebLogic Server 8.1调优操作指导书关键词Key words:WebLogic Server,调优摘要Abstract:本文介绍了如何进行WebLogic Server 8.1调优缩略语清单List of abbreviations:1 操作系统调优1.1 操作系统调整交换区(swap area)的大小。
Weblogic性能调优实用手册1.尽量使用池资源。
Weblogic的池资源有很多种,这里介绍两种操作简单对系统性能提升比较大的两种池资源的调优方法:Thread pool (线程池)和JDBC connection pool (连接池)调优。
a)线程调优一般经验值为cpu个数乘15,同时将线程增量设为0。
例如一台服务器有2个cpu则,则线程数设置为2*15 =30个,线程增量设为0。
在服务器--〉配置--->高级--->最下边的配置执行队列进行线程调优。
在上图中选择执行队列weblogic.kernel.Default,进行线程调优配置,如下图:b)连接池调优基本准则为:连接数〉线程数然后再根据实际用户情况配置连接数。
在服务→JDBC→连接缓冲池中选择连接,如下图:例如一台服务器有两个cpu线程数设置为30,有60个用户使用此网络应用那么,初始连接数可以设置为30(连接数在30至60之间可以保证每一个线程至少有一个连接,没有线程空闲),增量可以设为5。
线程池资源可能导致应用系统运行速度慢,服务器资源没有得到有效利用。
JDBC连接池设置设置不正确会导致用户数增多时系统出现无法响应的情况。
2.内存调优内存应当根据不同的应用程序来设置,没有特殊要求则经验值为1G。
不正确设置内存可能导致的问题有a)应用服务经常出现内存溢出(Out Of memory),须重起应用。
b)Java虚拟机频繁回收内存,导致weblogic应用运行速度慢。
3.统计系统专用。
优化JTA时间不正确设置可能导致的问题有:报表发布失败(非常严重)4.错误检查方法:a)应用出现问题的时候,在weblogic应用程序窗口下使用ctrl+break的键盘组合,收集应用程序运行信息,方便查找程序错误。
b)查看应用程序内存使用server- monitoring比较优秀的内存使用情况应该是:增长减少比较平稳。
比较差的内存使用情况是:突然增减。
Weblogic参数调优一、调优背景:应银监会总会需求,需对银监会派出机构客户风险监测预警系统进行1轮剔除网络环境的性能测试(在山东试运行阶段的性能测试,由于网络瓶颈较大,造成性能指标较差)。
由于时间紧张,只是匆忙搭建了测试环境,Weblogic、DB2等的参数均是默认设置,并未进行任何调优。
默认设置在系统使用人数不多的情况性能尚可,但当使用人数较多,或者进行大并发的性能测试时,则会显得捉襟见肘。
如:在本次测试过程中,在集团关联处的50并发,就会造成系统崩溃。
如图可见:在集团关联并发50的时候,队列长度已经高达103,空闲线程数已经为0,同时吞吐量极低,由此造成系统崩溃。
通过分析,查找到原因在于:JVM分配内存过少;线程池、连接池里分配的线程数以及容量过低,通过调优后解决了问题二、调优思路:一般来讲,J2EE应用架构环境下的系统调优,首先我们一般会从应用程序出发,去审核代码,做到代码级的优化,然后再调整应用服务器(BEA WebLogic8.1)和数据库(DB2)的参数,最后当然是调整操作系统和网络的性能(包括硬件升级)。
这是一种MDA的先进做法。
诚然,在许多项目中,不可能完全按照这个思路来做,我们把目标首先定位在应用系统所在的应用服务器(BEA WebLogic8.1)上,通过对BEA WebLogic8.1的参数进行设置,使WebLogic8.1能够在最优化的环境中去运行其系统,然后对DB2数据的参数进行优化设置,最后进行性能测试再找出导致性能瓶颈所在的SQL代码或JA V A程序,考量其修改的可行性,并进行最终问题优先级认定,与瓶颈模块进行协商解决性能问题。
当然,大多数时候都出现了性能问题后才想到调优,而且一般都是先进行系统参数调整,实在解决不了才会对代码进行检查。
实际上,我们应当将代码级的调优放在应用设计时来做,测试生产时修改代码将是一件极其痛苦的事情。
而本次测试由于时间紧张,只对Weblogic进行了参数调优,现将调优步骤进行说明:1.JVM调整:(1)首先,在D:\bea\user_projects\domains\mydomain下用编译模式打开startWebLogic.cmd,查找代码:call "%WL_HOME%\common\bin\commEnv.cmd"(windows)或者call "%WL_HOME%\common\bin\commEnv.sh"(linux/aix)找到后,在相应路径用编译模式打开该文件:(2)接着要弄清楚JDK厂商(是bea,还是sun、IBM等)set JA V A_VENDOR=BEA(此处说明应用的为BEA的JDK)(3)之后查找weblgoic运行模式:set PRODUCTION_MODE=默认是开发模式(线程计数默认为15)即为空,在上线时,应将其改为产品模式(线程计数默认为25):set PRODUCTION_MODE=ture(4)然后需修改分配给JVM的内存(默认为96M):因已确定厂商为BEA,运行模式为产品模式,所以找到::beaif "%PRODUCTION_MODE%" == "true" goto bea_prod_modeset JA V A_VM=-jrockitset MEM_ARGS=-Xms1024m -Xmx1024mset JA V A_OPTIONS=%JA V A_OPTIONS% -Xverify:nonegoto continue:bea_prod_modeset JA V A_VM=-jrockitset MEM_ARGS=-Xms1024m -Xmx1024m(此处即为分配给JVM的内存范围)goto continue可根据系统需要,修改分配的内存数注:如为32位的操作系统,则最大支持分配2G内存2.线程池调整:打开Weblogic,在路径:mydomain->服务器->myserver->右键打开“查看执行队列” weblogic.kernel.Default调整如下指标:(1) 线程计数—分配给此队列的线程数,建议值为: 100(2) 线程数增加—在出现溢出时,要添加到队列中的线程数,建议值为: 50(3) 最大线程数—此队列可以拥有的最大线程数。
Weblogic性能调优基本方案Weblogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
由于部署在weblogic上的一般来说都是大数据量高并发量的应用,所以性能调优就成了非常重要的一环,本文整理了一些Weblogic性能调优的基本方案供参考。
注:下面的介绍是以Weblogic8.1为例的,其它版本的Weblogic可能会有些不同。
1) 设置JAVA参数:a) 编辑Weblogic Server启动脚本文件;BEA_HOME\user_projects\domains\domain-name\startWebLogic.cmd(startWeb Logic.sh on Unix)BEA_HOME\user_projects\domains\domain-name\startManagedWebLogic.cmd(s tartManagedWebLogic.sh on Unix) -这个是做集群的时候用b) 编辑set JAVA_OPTIONS命令,如:set JAVA_OPTIONS=-Xms256m -Xmx256m;(在UNIX下把MEM_ARGS=”-Xms1024m -Xmx1024m -Xmn128m”加到上述两个.sh 文件中即可)c) 保存,重启即可。
注:在WebLogic中,为了获得更好的性能,BEA公司推荐最小Java堆等于最大Java堆。
2) 开发模式 vs. 产品模式:开发模式和产品模式的一些参数的默认值不同,可能会对性能造成影响。
下面是对性能有影响的参数列表:参数开发模式默认值产品模式默认值Execute Queue: Thread Count 15 threads 25 threadsJDBC Connection Pool: MaxCapacity 15 connnections 25 connections通过启动管理控制台,在域(如:mydomain)> 配置 > 常规选择产品模式。
Weblogic性能调优经验WEBLOGIC性能调优方案1.查看当前线程池大小:登录WEBLOGIC控制台,选择服务器-某服务器-监视-性能,可查看到当前最大线程数量。
由于WEBLOGIC9取消了在页面进行调整线程大小的功能,需要在后台进行修改。
2.修改线程池大小:进入服务器的目录D:\bea\user_projects\domains\base_domain\config,使用编辑器打开config.xml文件,找到如下段落:<server><name>AdminServer</name><listen-address>168.5.130.34</listen-address>z</server>在</server>上面添加如下两行:默认10<self-tuning-thread-pool-size-min>1000</self-tuning-thread-pool-siz e-min><self-tuning-thread-pool-size-max>1000</self-tuning-thread-pool-siz e-max>添加后的结果:<server><name>AdminServer</name><listen-address>168.5.130.34</listen-address><self-tuning-thread-pool-size-min>1000</self-tuning-thread-pool-size-min><self-tuning-thread-pool-size-max>1000</self-tuning-thread-pool-size-max></server>按上面的步骤,继续找到ProxyServer,以及所有MANAGE受管机的<server>段落,分别添加上面的两行语句。
WebLogic调优以下内容基于Linux OSOSOS需要调整的参数比较少,主要是网络参数、文件打开数限制参数。
调整Linux系统使用sysctl命令修改TCP参数等待时间间隔:sysctl -w ip_ct_tcp_timeout_time_wait=60;调整打开文件的最大数:在/etc/sysctl.conf文件中,添加:Fs.file-max=65535,然后运行sysctl –p;调整打开文件描述符最大数为8192:在/etc/security/limits.conf文件,添加:WebLogic hard nofile 8192(仅针对WebLogic用户),然后在WebLogic启动文件里运行ulimit-n 8192激活设置。
OS全局打开文件数限制:修改 /etc/sysctl.conf,增加fs.file-max = XXXX,不同版本OS有不同的限制,在数据库服务器或应用服务器中必须调大。
如何查看一个进程已打开文件数:Lsof -p pid 查看进程打开文件,列出每个文件Lsof -u XXX 查看用户打开文件个数lsof -p pid| wc -l计算进程打开文件个数(wc 计算行数 -l或字数 -w、字符数-m或字节数-c)JDKJDK参数一般分成以下几类:●堆设置-Xms -Xmx (SUN设置HEAP的初始与最大值,IBM JDK 建议不相同)SUN JDK专用-XX:MaxPermSize=256m ,持久代大小(CLASS元数据存储区,不会被GC),此值默认比较小(4M),需要调大,否则抛ng.OutOfMemoryError: PermGenspace。
尤其对JSP、动态编译类较多的系统。
IBM JDK没有MaxPermSize参数,这个区域就在HEAP底部。
●GC设置SUN JDK-XX:+UseParallelGC或-XX:+UseParallelOldGC,利用所有可用CPU进行并行GC,大吞吐量,PAUSE较长-XX:+UseConcMarkSweepGC,并发GC,后台Thread,可以减少Pause时间,但Thread本身有开销而降低吞吐量IBM JDK 见下表●GC统计信息设置-verbose:gc 打印GC过程,时间等●并发收集器设置SUN JDK-XX:ParallelGCThreads=N ,并发GC的线程数,一般与CPU个数相同。
社区Weblogic应用层优化调试设置
以Weblogic为中间件的社区应用层,有以下性能优化设置供参考。
1、设置为生产模式,增大连接数据
进入weblogic console 点击左边对应的域名,勾选右边的生产模式。
2、Weblogic登录超时时间
进入weblogic console界面,点击左边对应的域名,再点击监视,再点击服务器/子系统名称AdminServer ,再点击调整,可以看到如下图。
3、设置weblogic 占用的内存值
进入weblogic安装域名目录所在的bin文件夹,修改setDomainEnv.sh 文件根据物理机的实际情况设置内存值
4、设置应用服务数据库连接数据
打开应用程序xp-app 的jdbc数据连接文件
根据oracle实际连接数修改jdbc连接数
Oracle连接数据查看show parameter processes;
5、不限制事务数量
修改服务的事务处理数量限制,修改xp-app应用服务的jta.properties
超出默认的50会报错误
Caused by: ng.IllegalStateException: Max number of active transactions reached:50
6、优化程序代码
在weblogic安装域目录下的log日志可以看到严重超时方法。
优化WebLogic 服务器性能参数WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。
基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性。
试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态:一修改运行队列线程数的值。
在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。
当任务加入一个WebLogic 实例,它就被放到执行队列中,然后分配给任务一个线程来运行。
线程消耗资源,因此要小心处理这个属性——增加不需要的值,会降低性能。
二,如果可能,使用自带的性能包(NativeIOEnabled=true)。
三,使用特定的应用程序执行队列。
四,使用JDBC连接池时,修改下列属性:n 驱动名称:使用小的驱动或者jDriver。
n 初始容量:设为与最大容量相同的值。
n 最大容量:其值至少应与线程数相同。
五,把连接池的大小设为与执行队列的线程数相同。
六,设置缓冲。
七,为Servlet和JSP使用多个执行队列。
八,改变JSP默认的Java编译器,javac 比jikes或sj要慢。
优化WebLogic提要:n 为WebLogic 启动设置Java 参数。
n 设置与性能有关的配置参数。
n 调整开发与产品模式默认值。
n 使用WebLogic “自有的IO ”性能包。
n 优化默认执行队列线程。
n 优化连接缓存。
n 如何提高JDBC 连接池的性能。
n 设置Java 编译器。
n 使用WebLogic 集群提高性能。
n 监视WebLogic 域。
一、为WebLogic 启动设置Java 参数只要启动WebLogic ,就必须指定Java 参数,简单来说,通过WebLogic.Server 域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出错,BEA 公司推荐你把这个命令写进脚本里。
java,weblogic和jdk性能文档作者: 张新周2005年1.应用服务器weblogic应用服务器是weblogic8.11.1 weblogic核心运行规则WebLogic Server的核心组件由监听线程,套接字复用器和可执行线程的执行队列组成。
当服务器由监听线程接收到连接请求后,将对它的连接控制权交给等待接收请求的套接字复用器。
然后套接字复用器读取离开套接字的请求,并将此请求及相关安全信息或事务处理环境一起置入适当的执行队列中(一般为默认的执行队列)。
当有一个请求出现在执行队列中时,就会有一个空闲的执行线程从该队列中取走发来的该请求,并返回应答,然后等待下一次请求.(演示weblogic的监控页面)1.1.1 演示线程监控1.1.2 演示吞吐量,请求等待队列,内存使用和回收情况1.2 weblogic的参数调整调优并不是没有目标的调整.没有目标的调优是没有意义的.在一定的要求下才能有目标的调优.A,调整默认执行线程数理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总线体系架构、I /O、操作系统的进程调度机制、JVM的线程调度机制。
WebLogic生产环境下默认的线程为25个,随着CPU个数的增加,WebLogic可以近乎线性地提高线程数。
线程数越多,花费在线程切换的时间也就越多,线程数越小,CPU可能无法得到充分利用。
为获取一个理想的线程数,需要经过反复的测试。
在测试中,可以以25*CPUs为基准进行调整(这是个基准,实际可能跟这个有差距的)。
当空闲线程较少,CPU利用率比较低时,可以适当增加线程数的大小(每五个递增)。
对于PC Server 和Window 2000,则最好每个CPU小于50个线程, 以CPU利用率为90%左右为佳。
由于目前WebLogic执行线程没有缩小线程数的功能,所以应将参数Threads Increase设置为0,同时不应改变优先级的大小。
WebLogic Server 性能及调整-数据库调整数据库可能是主要的企业级瓶颈。
通过按本部分及所使用数据库的产品文档中的调整准则进行调整,可对数据库进行配置以获得优化性能。
▪常规建议▪数据库特定的调整常规建议本部分提供常规数据库调整建议:▪良好的数据库设计- 将数据库工作负荷由多个磁盘分担,以避免或减少磁盘超载。
良好的设计还包括及对表、索引和日志的适当的大小设置与合理组织。
▪磁盘I/O 优化- Disk I/O 优化与吞吐量和可伸缩性有直接关系。
即使是访问最快的磁盘,也要比访问内存慢几个数量级。
只要有可能就要优化磁盘访问次数。
一般而言,选择较大的I/O 块/缓冲区大小可以减少磁盘访问次数,还可以显著增加重载生产环境中的吞吐量。
▪检查点操作- 此机制可以将所有脏缓存数据定期刷新到磁盘中,这会在检查点期间增加I/O 活动和系统资源使用率。
虽然频繁的检查点操作可以提高磁盘中数据的一致性,但也会降低数据库性能。
大多数数据库系统都有检查点操作功能,但并非所有数据库系统都支持用户级控制。
例如,管理员通过Oracle 可以设置检查点频率,但用户却无法控制SQLServer 7.x 检查点。
有关推荐设置,请参阅所使用的数据库的产品文档。
▪通过将多项操作集中到一个批处理中和/或增加并行执行的操作(增加并发操作)的数量,有时可以显著降低磁盘开销和数据库开销。
示例:∙增加消息传递桥BatchSize或存储转发WindowSize的值可以提高性能,因为较大的批处理大小可以减少I/O 数,但会增大I/O 量。
∙以编程方式利用JDBC 的批处理API。
∙使用MDB 事务批处理功能。
请参阅调整消息驱动Bean。
∙通过增加max-beans-in-free-pool和MDB 线程缓冲池大小(如果可以利用批处理则将其减小)增加并发。
数据库特定的调整以下部分提供Oracle、SQL Server 和Sybase 的基本调整建议:▪Oracle▪Microsoft SQL Server▪Sybase注应始终检查数据库特定的供应商文档中的调整准则。
Weblogic服务器的性能调试优化方案注:在下面做的介绍都是以Weblogic8.1为例的,其它版本的Weblogic可能会有些许不同。
1) 设置JAVA参数;a) 编辑Weblogic Server启动脚本文件;BEA_HOME\user_projects\domains\domain-name\startWebLogic.cmd(startWebLogic.sh on Unix)BEA_HOME\user_projects\domains\domain-name\startManagedWebLogic.cmd(startManage dWebLogic.sh on Unix)b) 编辑set JAVA_OPTIONS命令,如:set JAVA_OPTIONS="-Xms256m —Xmx256m;c) 保存,重启即可。
注:在WebLogic中,为了获得更好的性能,BEA公司推荐最小Java堆等于最大Java堆。
2) 开发模式vs. 产品模式;开发模式和产品模式的一些参数的默认值不同,可能会对性能造成影响,下面是对性能有影响的参数列表:通过启动管理控制台,在域(如:mydomain)> 配置> 常规选择产品模式。
3) 尽量开启本地I/O;通过启动管理控制台,在域(如:mydomain)> 服务器> server实例(如:myserver)> 配置> 调整选择启用本地I/O。
注:此值也可通过手动的修改config.xml配置文件。
4) 调优执行队列线程;a) 修改默认执行线程数在这里,执行队列的线程数表示执行队列能够同时执行的操作的数量。
但此值不是设的越大越好,应该恰到好处的去设置它,太小了,执行队列中将会积累很多待处理的任务,太大了,则会消耗大量的系统资源从而影响整体的性能。
在产品模式下默认为25个执行线程。
为了设置理想的执行队列的线程数,我们可以启动管理控制台,在域(如:mydomain)> 服务器> server实例(如:myserver)> 监视> 性能中监控最大负载时执行队列的吞吐量和队列中的等待请求数,据此确定理想的数值。
Linux中的Weblogic性能测试调整一.操作系统参数调整1.linux TCP连接数调整通过命令:ulimit –n 查看当前最大TCP连接数,这表示当前用户的每个进程最多允许同时打开多少个文件。
一般系统默认为1024,在并发量大的情况下肯定不够用。
修改此限制的最简单办法:ulimit –n <file_num> 设置单一进程允许打开的最大文件数。
如果系统回显类似于“Operation not permitted”之类的话,说明修改失败,需要修改系统对该用户打开文件数的软限制或硬限制。
修改软限制或硬限制:修改/etc/security/limits.conf文件,在文件中添加如下行:* soft nofile 10240* hard nofile 10240表示修改所有用户的限制,也可以用指定用户名替代。
修改/etc/pam.d/login文件,在文件中添加如下行:session required /lib/security/pam_limits.so查看Linux系统级的最大打开文件数限制:cat /proc/sys/fs/file-max2.修改网络内核对TCP连接的有关限制端口范围:修改/etc/sysctl.conf文件,在文件中添加如下行:net.ipv4.ip_local_port_range = 1024 65535另外,有时无法建立TCP连接的原因可能是因为Linux网络内核的IP_TABLE防火墙对最大跟踪的TCP连接数有限制修改/etc/sysctl.conf文件,在文件中添加如下行:net.ipv4.ip_conntrack_max = 10240这表明将系统对最大跟踪的TCP连接数限制设置为10240。
请注意,此限制值要尽量小,以节省对内核内存的占用。
3.其他参数调整在/etc/sysctl.conf文件中增加如下参数,进行系统参数调整net.core.rmem_default=128388607 默认的TCP数据接收缓冲net.core.wmem_default=128388607 默认的TCP数据发送缓冲net.core.rmem_max=128388607net.core.wmem_max=128388607net.ipv4.tcp_rmem=8196 128388607 128388607 最小默认最大net.ipv4.tcp_wmem=8196 128388607 128388607net.ipv4.tcp_keepalive_time=1800tcp_keepalive_time 值控制TCP/IP 尝试验证空闲连接是否完好的频率。
WebLogic调优参数配置WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。
基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性。
试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态:一. 修改运行队列线程数的值。
在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。
当任务加入一个WebLogic 实例,它就被放到执行队列中,然后分配给任务一个线程来运行。
线程消耗资源,因此要小心处理这个属性——增加不需要的值,会降低性能。
二. 如果可能,使用自带的性能包(NativeIOEnabled=true)。
三. 使用特定的应用程序执行队列。
四. 使用JDBC连接池时,修改下列属性:●驱动名称:使用小的驱动或者jDriver。
●初始容量:设为与最大容量相同的值。
●最大容量:其值至少应与线程数相同。
五. 把连接池的大小设为与执行队列的线程数相同。
六. 设置缓冲。
七. 为Servlet和JSP使用多个执行队列。
八. 改变JSP默认的Java编译器,javac 比jikes或sj要慢。
提要:为 WebLogic 启动设置 Java 参数。
设置与性能有关的配置参数。
调整开发与产品模式默认值。
使用WebLogic “自有的IO ”性能包。
优化默认执行队列线程。
优化连接缓存。
如何提高 JDBC 连接池的性能。
设置 Java 编译器。
使用 WebLogic 集群提高性能。
监视 WebLogic 域。
一、为 WebLogic 启动设置 Java 参数只要启动 WebLogic ,就必须指定 Java 参数,简单来说,通过 WebLogic.Server 域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出错, BEA 公司推荐你把这个命令写进脚本里。
为了简化这个过程,你可以修改样例脚本里的默认值,样例脚本是提供 WebLogic 启动服务器的。
如果你用配置向导创建你的域, WebLogic 启动脚本( startWebLogic.cmd )放在 domain-name 目录里。
默认情况下,这个目录是 BEA_HOME\user_projects\domain\domain-name , BEA_HOME 表示安装路径, domain-name 是在配置模板中设置的域名称。
你需要在这个脚本中修改一些默认的 Java 参数值,使之适合你的应用环境和程序。
在这个文件中主要的性能参数是 JAVA_HOME 和 Java 堆的大小。
设 JAVA_HOME 的值为 JDK 所在的位置,如:set JAVA_HOME=C:\bea\jdk141_03为得到高性能的吞吐量,把 Java 堆的最小值与最大值设为相等。
如:"%JAVA_HOME%\bin\java" -hotspot -Xms512m -Xmx512m -classpath %CLASSPATH% -二、设置与性能有关的配置参数在一个 WebLogic 域中,配置文件( config.xml )位于与管理服务器通信的机器里,提供WebLogic MBean 的长期存储。
管理服务器作为连接的中心点,为服务实例与系统管理工具提供服务。
域也可以包括其他的 WebLogic 实例,称之为从服务,主要为应用程序提供服务。
当启动管理服务器是,首先读域配置文件,然后跳过建立在配置文件中管理 MBean 默认的属性值,每一次用系统管理工具(不管是命令行界面还是管理控制台)改变一个属性值,它都会被存到相应的管理 MBean ,并且写进配置文件。
下表列出了 config.xml 文件中影响服务器性能的参数。
三、调整开发模式与产品模式默认值你可以指定域为开发环境或为产品环境。
WebLogic 会根据你指定的环境类型使用不同的默认值提供不同的服务。
下表列出了两种模式下的默认值3 . 1 更改运行时模式在创建了一个域后,按下列步骤可以更改域里所有服务的的运行时模式:1 .为更改运行在一个 WebLogic 主机上的所有域的运行时模式,用文本编辑器打开WL_HOME\common\bin\commEnv.cmd(Windows) 或者 WL_HOME\common\bin\commEnv.sh (UNIX) ,WL_HOME 是安装 WebLogic 的路径。
为指定的域更改运行时模式,就用文本编辑器打开domain-name \StartWebLogic.cmd (Windows) or domain-name\StartWebLogic.sh (UNIX) , domain-name 为创建的域的目录。
2 .在这个脚本中,更改 PRODUCTION_MODE 的值,如果你要服务器运行在产品模式,指定其值为TRUE 。
3 .重启所有的服务器。
3 . 2 两种模式的不同下表列出了开发模式与产品模式几种关键项的区别:四、使用WebLogic“自有的IO”性能包当你使用自有的性能包,测试基准就表明了主要性能的提高。
性能包采用最优化的平台及多线程的 Socket 去提高服务器的性能。
例如,本地 Socket 读的多线程有自己的执行队列而不需要借用默认的执行队列线程,这样可以让默认执行线程很从容去处理应用程序。
不过,如果你一定要用纯 Java socket 读在主机上运行,你仍然可以通过配置每个服务器实例和客户机中适当的 socket 读的线程数量,来提高 socket 通信的性能。
设置性能包的操作方法:默认情况下,装载在 config.xml 中的是自有的性能包。
为了验证这个设置,在配置文件中检查NativeIOEnabled 属性是否设为“ true ”( NativeIOEnabled=true )。
你也可以通过管理控制台来验证,步骤如下:1 ,启动管理服务器。
2 ,访问管理控制台。
3 ,展开左边面板的 Servers 节点,显示域服务。
4 ,点击你要配置的服务实例。
5 ,选择 Configuration - >Tuning tab 。
6 ,如果 Enable Native IO 复选框没有被选择,选中即可。
7 ,点击 Apply 。
8 ,重启服务器。
五、优化默认执行队列线程默认情况下,一个新的 WebLogic 实例配置了一个开发模式执行队列, weblogic.kernel.default, 它包含 15 个线程。
另外, WebLogic 提供了 2 个预配置队列:weblogic.admin.HTTP——只在管理服务器上才有,这个队列供与管理控制台的通信用,你不能再配置它。
weblogic.admin.RMI——管理服务器和被管理服务器上都有这个队列,它是供管理的交通之用,也不能再配置它。
如果你不配置额外的执行队列,并且指定应用给这些队列, web 应用程序和 RMI 对象就使用默认的队列 weblogic.kernel.default 。
注意;如果自带的执行包没有在你的平台上使用,你可能需要调整默认的执行队列线程数和担任socket 读的线程的百分比,去实现最佳性能。
5 . 1 你应该更改默认的线程数吗 ?增加更多的线程到默认的执行队列并不意味着你能处理更多的工作。
即使增加更多的线程,仍然被处理器的能力限制。
因为线程消耗内存,所以增加线程数属性的值不必要的降低了性能。
一个高的执行线程数导致更多的内存被占用并且增加了上下文转换程序,它也会降低性能。
线程数属性的值与应用程序处理的工作的类型关系密切。
例如,如果你的客户应用程序比较小,通过远程调用处理的工作较多,这样,客户端会花费更多的时间连接,因此,与能完成大量客户端任务的客户应用程序相比,会需要更多的线程数。
如果你的工作不需要使用超过15个线程(开发模式默认)或者25个线程(产品模式默认),就不要改变这个属性的值。
通常,如果你的应用程序访问数据库花很长时间才返回结果,与访问数据库很短时间就返回的应用程序比较,你会需要更多的执行线程。
从后者来看,用少点的线程数可能提高性能。
5 . 2 需要修改默认线程数的情形为了给执行队列决定一个理想的线程数,当队列中所有应用程序都运行在最大负荷的情况下,监视队列的吞吐量。
增加线程数,重复负载测试,直到达到最佳的吞吐量。
(在某些情况下,增加线程数将产生足够多的上下文转换程序,使得队列中的吞吐量开始减少。
)注意: WebLogic 管理控制台显示的是所有服务器执行队列累积的吞吐量。
为了得到这个值,后面将会介绍。
下表列出了在WebLogic 域中调整的线程及与CPU数量相关的情形,这些情况也假定WebLogic运行在最大负荷下,并且使用默认的执行队列满足所有的线程的请求。
如果你配置了额外的执行队列并指派了应用程序到具体的队列,就需要依据一个个连接池得到结果。
5 . 3 修改默认线程数的步骤用管理控制台修改默认执行队列线程数如下:1.如果管理服务器没有运行,先启动。
2.访问管理控制台。
3.展开左边面板的Servers 节点,显示域服务。
4.右击服务名称,在弹出菜单中选择View Execute Queues ,就会在右边面板显示有执行队列的表用来修改。
注意:你只能修改默认的执行队列或者用户定义的执行队列。
5.在Name列,直接点击默认执行队列名称,显示配置标签用来修改执行队列数。
6.填下适当的线程数。
7.点击Apply,保存刚才的修改。
8.重启服务器,使新的执行队列设置生效。
5 . 4 指派应用程序到执行队列虽然可以配置默认的执行队列,为所有的 WebLogic 应用程序提供最佳的线程数,但是为关键的应用程序配置多个执行队列可以提供更多的管理控制。
通过使用多执行队列,你可以保证应用程序有权占用固定的线程数,而不管 WebLogic 服务器有多大的负荷。
5 . 5 创建执行队列一个执行队列代表执行线程的命名集,线程指向一个或多个 Servlet 、 JSP 、 EJB 、 RMI 对象。
执行队列在 config.xml 文件中描述,作为服务器元素的一部分。
如,在 config.xml 文件中描述一个有 4 个线程的队列,命名为 CriticalAppQueue ,如下:...<ServerName="examplesServer"ListenPort="7001"NativeIOEnabled="true"/><ExecuteQueue Name="default"ThreadCount="15"/><ExecuteQueue Name="CriticalAppQueue"ThreadCount="4"/>...</Server>另一种创建队列的方法是通过管理控制台,配置步骤如下:1 .启动管理服务器,访问控制台。