weblogic数据源优化调整记录.docx
《weblogic数据源优化调整记录.docx》由会员分享,可在线阅读,更多相关《weblogic数据源优化调整记录.docx(10页珍藏版)》请在冰豆网上搜索。
weblogic数据源优化调整记录
一:
解决数据源一段时间后不可用问题前的观察和分析:
1.1.开始时连接池各项属性的配置信息:
初始容量:
要在创建连接池时创建的物理连接数。
更多信息...
最大容量:
此连接池可容纳的最大物理连接数。
更多信息...
容量增长:
将新连接添加到连接池时创建的连接数。
更多信息...
语句高速缓存类型:
用于维护存储在语句高速缓存中的预定义语句的算法。
更多信息...
语句高速缓存大小:
存储在高速缓存中的预定义语句和可调用语句的数量。
(这样可能会提高服务器性能。
)更多信息...
高级
保留时测试连接
使WebLogicServer能够在将连接提供给客户机之前对连接进行测试。
(要求指定“测试表名称”。
)更多信息...
测试频率:
WebLogicServer对未用连接进行测试的间隔秒数。
(要求指定“测试表名称”。
)未通过测试的连接将被关闭,然后将它们重新打开以重新建立有效的物理连接。
如果测试再次失败,则此连接将被关闭。
更多信息...
测试表名称:
测试物理数据库连接时使用的数据库表名。
指定“测试频率”和启用“测试保留的连接数”时需要此名称。
更多信息...
信任空闲池连接的秒数:
在将连接传送到应用程序之前或定期连接测试过程期间,WebLogicServer相信连接仍然有效并将跳过连接测试时使用连接的秒数。
更多信息...
收缩频率:
在收缩为满足需要而增大了的连接池前需等待的秒数。
更多信息...
初始化SQL:
要执行用于初始化新建物理数据库连接的SQL语句。
以SQL后跟一个空格作为语句的开头。
更多信息...
重试创建连接的频率:
建立数据库连接尝试的间隔秒数。
更多信息...
登录延迟:
创建每个物理数据库连接前的延迟秒数。
此延迟支持不能快速连续处理多个连接请求的数据库服务器。
更多信息...
非活动连接超时:
保留连接处于不活动状态的秒数,该时间过后WebLogicServer将收回该连接并将其释放回连接池。
更多信息...
最大等待连接数:
等待保留数据源的连接池中的连接时会阻塞线程的最大并发连接请求数。
更多信息...
连接保留超时:
保留连接池中的连接的调用超时之前经过的秒数。
更多信息...
语句超时:
连接池配置信息重要修改点:
1.
初始容量:
最大容量:
容量增长:
XX文库-让每个人平等地提升自我调整此参数是为了提升数据源的性能,在数据源创建之初,直接创建60个可用的数据库链接,以防止在oracle服务器端在一个数据库实例zmddb下,默认提供最大150个数据库链接可供使用,而由于在同一个zmddb数据库实例下,我们有两个用户zmdswoa和zmdswbgscms,也就是说假如zmdswbgscms应用程序使用了140个数据库链接,并且没有得到合理的释放,那么zmdswoa应用程序所使用的数据源中即使配置了60个最大容量的数据库链接,但是,初始容量为1,那么也就是需要时才创建新的数据库链接放入数据源的池中,那么如果oracle服务端,已经没有可用的数据库连接了,zmdswoa对应的数据源将无法创建可用链接。
所以,初始容量和最大容量根据zmdswoa的实际情况,直接设置为60,一开始创建数据源时就占用60个,最大限度的保证了zmdswoa应用程序中数据库链接的可用链接数量,防止受到其他同一个zmddb数据库实例下其他用户zmdswbgscms的可用数据库链接竞争。
至于容量增长:
由1调整至5,是为了增加并发性,因为创建数据库链接需要有一定的延迟,如果增大这个数字,会在并发情况下,增强获得数据库连接的可靠性和速度,获得更好的性能。
1.
重试创建连接的频率:
调整此参数是为了在连接池自动加载或维护时,如果在一定时间内不断的重新创建正确的可用的数据库链接,30秒来限定创建连接的超时时间,也就是30秒之内,会不断的尝试创建正确的可用链接。
2.
连接保留超时:
调整此参数是为了在并发情况下,如果一定的时间内无法获得数据库链接,则暂时等待,并不直接返回NullPointerException,而保留连接池中的连接的调用超时之前经过的秒数,设置为30秒,也就是说,在请求链接之后,30秒之内,会不断的尝试从数据源中返回正确可用的数据库链接给调用方,直到正确返回,否则在30秒内会持续保留。
3.
非活动连接超时:
保留连接处于不活动状态的秒数,该时间过后WebLogicServer将收回该连接并将其释放回连接池,这样,有利于更加合理的调度数据库链接资源,增加数据源中可利用数据库链接的数量,以保证在一定的时间内,数据源更大的服务能力和并发能力,并通过100秒这个显示的时间限定,在到了时间之后,自动回收不活跃的数据库链接到数据源中,这样,减少了数据库链接泄露和无可用数据库链接发生的可能性。
1.2.在部署界面中,监视JDBC各项数据情况:
从这个界面,可以获得应用程序在一定时间内的数据库最大使用量,和并发量,和健康度(泄露链接计数,可用数,不可用数等),观察各个数据源的现状。
从这个界面,可以监视weblogic中Server实例AdminServer的服务情况,如一般信息,健康状况,通道,性能,线程,计时器,工作量,安全,默认存储,JMS,SAF,JDBC,JTA等,而我们需要关注的主要是一般信息,健康状况,性能,线程,JDBC这几项。
特别说明:
(1)weblogic在不修改的情况下,默认的可执行线程数为15,
(2)weblogic数据源在不修改的情况下,默认数据源的最大容量为15,初始容量为1,容量增长为1.
1.3用zmdswoa的身份登录数据库客户端,并观察当前的会话情况:
SID,代表了oracle服务器端生成的数据库连接的唯一标示数字,按照SID排序,可以看出当前数据库链接的使用量,因为oracle的SID是从1开始分配的。
用户名,代表了连接该数据库实例zmddb的用户名,以此可以判断出当前各个应用程序链接数据库和数据库使用情况。
1.4修改可执行线程数:
D:
\bea11g\user_projects\domains\base_domain\bin下的setDomainEnv.cmd;
调整规则:
JDK5.0以后每个线程栈大小为1M,但是操作系统对一个进程内的线程数还是有限制的,不能无限生成。
32位操作系统根据JVM最大堆内存设置;64位操作系统经验值在3000~5000左右。
重要代码片段:
setJAVA_OPTIONS=-Dweblogic.threadpool.MinPoolSize=50-Dweblogic.threadpool.MaxPoolSize=50
1.5修改weblogic服务器运行时可使用的内存使用量和静态堆栈的内存使用量:
调整规则,32位操作系统,一般不超过2G即可。
重要代码片段:
if"%JAVA_VENDOR%"=="Sun"(
setWLS_MEM_ARGS_64BIT=-Xms1024m-Xmx1024m
setWLS_MEM_ARGS_32BIT=-Xms1024m-Xmx1024m
)else(
setWLS_MEM_ARGS_64BIT=-Xms1024m-Xmx1024m
setWLS_MEM_ARGS_32BIT=-Xms1024m-Xmx1024m
)
setMEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT%
setMEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT%
if"%JAVA_USE_64BIT%"=="true"(
setMEM_ARGS=%MEM_ARGS_64BIT%
)else(
setMEM_ARGS=%MEM_ARGS_32BIT%
)
setMEM_PERM_SIZE_64BIT=-XX:
PermSize=128m
setMEM_PERM_SIZE_32BIT=-XX:
PermSize=128m
if"%JAVA_USE_64BIT%"=="true"(
setMEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT%
)else(
setMEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT%
)
setMEM_MAX_PERM_SIZE_64BIT=-XX:
MaxPermSize=256m
setMEM_MAX_PERM_SIZE_32BIT=-XX:
MaxPermSize=256m
1.6从BeaProducts→Tools中启用NodeManager,即为节点管理器,是安装weblogic时选择安装的一个weblogic自带的工具,会自动监控AdminServer的健康状况,并自动决定是否重新启动,这样,可以实现监控Server相关内容的健康状况,并在异常时自动重启;
1.7数据源的名字一定不能和应用的名字一样,否则会出现一定时间后,数据源对象自动不正常,甚至自动销毁(这个可能是weblogic的bug,只能尽量避免);
二:
调整并优化了各项参数后,重新启动weblogic服务器,从weblogic的控制台监视,观看调整后变化,查看各项数据值,确认修改成功后即可:
2.1.应用并发能力能力增强,由会话,最大会话数,总会话数可以看出。
2.2.修改了setDomainEnv.cmd文件后,可执行线程数量增大到了50个,提高了多线程处理能力,当然,也需要耗费更多的服务器内存,所以,调整服务器可用内存是必须的。
2.3调整服务器可用内存后,监视服务器性能指数,有所提升。
2.4调整了数据源配置后,可明显看到,数据源性能指数有明显的上升,并且,数据库链接获得的稳定性和正确性明显提升。
三:
与应用程序相关的数据库链接问题关键点总结:
1.在weblogic中配置数据源时,数据源的名字,绝对不能和应用的名字一样,例如,如果应用程序的名字为zmdswoa的话,那么数据源的名字最好是jdbc-zmdswoa,而不能为zmdswoa,如果重名,weblogic服务器会在加载和创建数据源对象时产生混淆,在一定时候,会造成数据源对象莫名奇妙的销毁,从而获得不了任何数据库链接,而数据源对象在下次重启weblogic服务器之前,都不会自动修复,所以,应用程序中会出现请求数据库连接时NullPointerException异常。
修改所有数据源的名字,前面都加上了jdbc-前缀,使之与应用名字zmdswoa和zmdswbgscms不重名,减少了这种weblogic中bug发生的可能性。
2.在办公系统zmdswoa中潜入了zmdswbgscms应用中的一个滚动图片jsp页面,而且,该页面代码由于代码错误,本来要加载服务器静态图片,但却是每次都需要重新从数据库中查询BLOB二进制流文件,有严重的数据库链接占用和消耗的情况发生;而碰巧,zmdswbgscms和zmdswoa这两个应用是在同一个zmddb数据库实例下,而由于zmdswbgscms应用占用了大量的数据库链接,(默认情况下,oracle服务器端在一个数据库实例下,最多只能有150个数据库链接),假如被zmdswbgscms应用占用了大量的数据库链接,那么zmdswoa应用所对应的数据源将在一段时间后甚至无法获得任何一个可用的链接。
修改了zmdswbgscms应用中的读取滚动图片的程序,使之在第二