Weblogic巡检技术说明
游五衔 knityster@gmail.com
2009年10月20日
knityster@gmail.com Weblogic巡检技术说明 目 录
目 录 ..................................................................................................................................2 0 概述 ................................................................................................................................3 1 WEBLOGIC巡检相关技术说明 .....................................................................................4 1.1 查看WEBLOGIC版本号 .............................................................................................4 1.2 查看WEBLOGIC使用的JVM版本 ............................................................................5 1.3 查看WEBLOGIC部署方式 .........................................................................................7 1.4 查看是否开启了NATIVEIO .......................................................................................8 1.5 内存参数MEM_ARGS查看和说明 ..........................................................................8 1.6 服务器性能参数查看和说明 ...................................................................................10 1.7 服务器执行队列(EXE QUEUES)参数查看和说明.................................................. 11 1.8 JDBC数据源参数查看和说明 ...............................................................................13 1.9 查看使用的JAVA编译器 .........................................................................................14 1.10 查看LINUX环境下的用户限制 .............................................................................14
注意: .......................................................................................................................15
http://hi.baidu.com/knityster 第2页,共19 页 knityster@gmail.com Weblogic巡检技术说明 0 概述
本文档由 游五衔 (knityster@gmail.com)编写,旨在阐述Weblogic巡检过程中所涉及的相关操作方法和注意事项。如需转载或用于其它用途,请先联系本人。由于是由个人整理、撰写,难免有错误之处,如有发现,请不吝指教。
http://hi.baidu.com/knityster 第3页,共19 页 knityster@gmail.com Weblogic巡检技术说明 1 Weblogic巡检相关技术说明
1.1 查看Weblogic版本号
方法一
查看Weblogic安装目录下的日志文件: /log/log.txt ,相关信息如下: 2009-9-19 14:21:36 -- install \"WebLogic Platform\" 8.1.6.0 at C:\\bea\\weblogic81 release 8.1.6.0 [Added]
方法二
通过Web控制台查看:
控制台-Home- Set your console preferences- Versions ,效果如下图1:
图1
方法三
直接查看控制台输出信息,效果如下图2:
http://hi.baidu.com/knityster 第4页,共19 页 knityster@gmail.com Weblogic巡检技术说明
图2
1.2 查看Weblogic使用的JVM版本
方法一
查看Weblogic配置文件:
对于Windows系统:
查看 ${DOMAIN_HOME}/bin/setDomainEnv.cmd ,相关设置形如: set JAVA_HOME=C:\\bea\\jrockit81sp6_142_10
对于Linux系统:
查看 ${DOMAIN_HOME}/bin/setDomainEnv.sh ,相关设置形如: JAVA_HOME=\"C:/bea/jrockit81sp6_142_10\"
方法二
直接查看控制台输出信息,效果如下图3:
http://hi.baidu.com/knityster 第5页,共19 页 knityster@gmail.com Weblogic巡检技术说明
图3
更改设置
对于Windows:
打开${DOMAIN_HOME}/bin/setDomainEnv.cmd,修改如下: 使用JRockit: set JAVA_VENDOR=BEA set JAVA_HOME=c:\\bea\\jrockit81sp4_142_05
使用Sun的jvm: set JAVA_VENDOR=Sun set JAVA_HOME=c:\\bea\\jdk142_05
对于Linux:
打开${DOMAIN_HOME}/bin/setDomainEnv.sh,修改如下: 使用JRockit: JAVA_VENDOR=BEA JAVA_HOME=\"c:\\bea\\jrockit81sp4_142_05\"
使用Sun的jvm: JAVA_VENDOR=Sun JAVA_HOME=\"c:\\bea\\jdk142_05\"
http://hi.baidu.com/knityster 第6页,共19 页 knityster@gmail.com Weblogic巡检技术说明 1.3 查看Weblogic部署方式
方法一
查看Weblogic配置文件。
对于Windows系统:
查看 ${DOMAIN_HOME}/bin/setDomainEnv.cmd ,设置为生产模式时形如:
set PRODUCTION_MODE=true
对于Linux系统:
查看 ${DOMAIN_HOME}/bin/setDomainEnv.sh ,设置为开发模式时形如:
PRODUCTION_MODE=\"\"
方法二
通过Web控制台查看:
控制台-Home-domains- Configuration - General , 查看 “Production Mode”是否被选中,效果如下图4:
http://hi.baidu.com/knityster 第7页,共19 页 knityster@gmail.com Weblogic巡检技术说明 图41.4 查看是否开启了NativeIO
控制台-Home- Servers- testServer- Configuration- Tuning , 查看“Enable Native IO”是否被选中,效果如下图5:
图5
1.5 内存参数MEM_ARGS查看和说明
对于Windows系统:
查看 ${DOMAIN_HOME}/bin/startWebLogic.cmd 。直接设置了MEM_ARGS变量的情形如下:
set MEM_ARGS=-Xms768m -Xmx768m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=384m -XX:+DisableExplicitGC -XX:PermSize=384m -XX:SurvivorRatio=6
注:以上设置不可分行
对于Linux系统:
查看 ${DOMAIN_HOME}/bin/startWebLogic.sh 。未设置MEM_ARGS变量,而之间添加相关参数设置的情形如下:
${JAVA_HOME}/bin/java ${JAVA_VM} -Xms768m -Xmx768m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:SurvivorRatio=6 -XX:MaxPermSize=384m -XX:+DisableExplicitGC -XX:PermSize=384m ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME} -Dweblogic.ProductionModeEnabled=${PRODUCTION_MODE} http://hi.baidu.com/knityster 第8页,共19 页 knityster@gmail.com Weblogic巡检技术说明 -Djava.security.policy=\"${WL_HOME}/server/lib/weblogic.policy\" weblogic.Server 注:以上设置不可分行
MEM_ARGS参数设置说明: Heap Size(堆大小)设置说明:
-Xms
设置初始堆值。 -Xmx
设置堆最大值。
注:一般将-Xms和-Xmx设置为相同,且最好不要超过实际内存值的80%。
-XX:NewSize
设置Young Generation的缺省值。 -XX:MaxNewSize
设置Young Generation的最大值。 -Xmn
设置Young Generation的大小。
注:一般将-XX:NewSize和-XX:MaxNewSize设置为相同,且-Xmn设置为为-Xmx值的1/4。
-XX:NewRatio
控制Young generation的比例,如-XX:NewRatio=3表示Young generation与Old generation的比例为1:3,即Young generation占1/4,Old generation1/4的3/4。
Young generation又被分成三部分,第一部分Eden,用于生成新的Object。另外两个部分为Survivor空间,当Eden用完后,会将 Objects复制到\"SS1\",当SS1空间满了的时候,再被复制到\"SS2\",Objects会在Survivor空间不断的被复制,直到他满足条件 进入Old generation止。
提示:如果将Heap Size设的越大,GC的週期就会拉长,而且每次GC的时间也会越长。
PermGen space(Permanent Generation space)-内存的永久保存区域设置说明:
-XX:PermSize
这一部分是用于存放Class和Meta的讯息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程式运行期间对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。
-XX:+DisableExplicitGC 加了这个参数会停止掉WLS或是程式内直接呼叫
http://hi.baidu.com/knityster 第9页,共19 页 knityster@gmail.com Weblogic巡检技术说明 GC,减少不必要的GC,将GC交由JVM去执行。
注:-XX 选项需要特别的系统权限,因此不建议随便使用 Garbage Collection描述:
Garbage Collection分多种等级,0级就是全部的垃圾回收(Full GC),会回收Old generation中的垃圾;1级或以上为部分垃圾回收,只会回收Young中的垃圾。
会发生OutOfMemory错误通常是产生于Old generation或Perm段垃圾回收后,仍然没有内存空间来存放新的Java 对象的时候。
当一个URL被访问时,内存的整个配置过程如下:
A. JVM会试图为Java的相关对象在Eden中初始化一块内存空间 B. 当Eden空间足够时,内存配置结束。否则到下一步
C. JVM会试图释放在Eden中所有不活跃的对象(这是属于1或更高级的垃圾回收)。释放后若Eden空间仍然不足以放入新对象,则会试图将部分Eden中活跃的对象放入到Survivor区/OLD区。
D. Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够,Survivor区的对象会被移到Old区,否则被保留在Survivor区。
E. 当OLD区空间不足时,JVM会在OLD区进行完全的垃圾收集(0级) F. 完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,就会导致JVM无法在Eden区为新的对象配置出内存区块,进而产生\"out of memory \"错误。
配置示例:
MEM_ARGS=\"-Xms768m -Xmx768m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=384m -XX:PermSize=384m -XX:SurvivorRatio=6 -XX:+DisableExplicitGC\" 在上面的配置中: YOUNG+OLD: 768M YOUNG: 256M Perm: 384M
Eden: YOUNG*6/(6+1+1)=192M Survivor: YOUNG*1/(6+1+1)=32M Heap Size: YOUNG+OLD+Perm=1024M
1.6 服务器性能参数查看和说明
控制台-Home- Servers- testServer- Configuration- Tuning , 查看记录相关性能参数。 注意点击“Advanced Options”以显示高级选项。效果如上图5:
http://hi.baidu.com/knityster 第10页,共19 页 knityster@gmail.com Weblogic巡检技术说明
相关参数说明:
Maximum Open Sockets
最大打开Socket数。默认值为-1(表示无限制)
Stuck Thread MaxTime
堵塞线程时间,默认值为600秒,超过这个时间没有返回的执行线程,系统将认为是堵塞线程如果weblogic认为某个队列中的所有的线程全部堵塞的话,weblogic将会增加执行线程的数量。
注意:执行线程的数量一旦增加,目前weblogic不会去减少他,如果增加了一些线程以后再次出现overflow的警告,weblogic会继续增加执行线程的数量,一直到达到上限为止。
Stuck Thread Timer Interval
系统检查堵塞线程的时间间隔,默认值为600秒。
Low Memory GC Threshold
当可用内存小于该百分比时,垃圾回收启动。默认值为5%。
Low Memory Granularity Level
当两次检测的可用内存变化超过该百分比时,垃圾回收启动。默认值为5%。
Low Memory Sample Size
低内存在一次检测中的取样次数。默认值为10。
Low Memory Time Interval
低内存检测间隔时间。默认值为3600秒。
Accept Backlog
等待队列中最多可以有多少TCP连接等待处理,默认值为50,如果在许多客户端连接被拒绝,而在服务器端没有错误显示,说明该值设得过低。
如果连接时收到connection refused消息,说明应提高该值,每次增加25%。
1.7 服务器执行队列(exe queues)参数查看和说明
控制台-Home- domains-mydomain -Servers- testServer- Monitoring- Monitor all Active Queues -Configuration- weblogic.kernel.Default, 查看记录执行队列相关性能参数。效果如下图6:
http://hi.baidu.com/knityster 第11页,共19 页 knityster@gmail.com Weblogic巡检技术说明
图6
相关参数说明: Queue Length:
在等待队列的最大请求数,理想状态下是0。默认值为65536。 Queue Length Threshold Percent
一个百分数,当request的数量达到队列长度的这个比例的时候,weblogic会发出overflow的标志信息。默认值为90%。 Thread Count
理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总体体系架构、 I/O、操作系统的进程调度机制、JVM的线程调度机制。随着CPU个 数的增加,WebLogic可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也就越多;线程数越小,CPU可能无法得到充分的利用。为获取一 个理想的线程数,需要经过反复的测试。在测试中,可以以25*CPU个数为基准进行调整。当空闲线程较少,CPU利用率较低时,可以适当增加线程数的大小 (每五个递增)。对于PC Server和Windows 2000,则最好每个CPU小于50个线程,以CPU利用率为90%左右为最佳。
为了设置理想的执行队列的线程数,我们可以启动管理控制台,在域 (如:mydomain)> 服务器 > server实例(如:myserver)> 监视 > 性能中监控最大负载时执行队列的吞吐量和队列中的等待请求数,据此确定理想的数值。
注:Linux查看CPU个数的方法: # cat /proc/cpuinfo
分析:
从processor 0 到processor N 表示有N个内核
http://hi.baidu.com/knityster 第12页,共19 页 knityster@gmail.com Weblogic巡检技术说明 从physical id : 0和physical id : 1可以看出有两个cpu 从cpu cores : 4可以看出每个cpu有四个内核
Threads Increase
如果weblogic发出overflow的标志信息,weblogic会尝试增加这个数量的执行线程,以解决处理矛盾。默认值为0。 Threads Maximum
最大执行线程数。默认值为400。 Threads Minimum
最小执行线程数。默认值为5。 Thread Priority
线程优先级。默认值为5。
1.8 JDBC数据源参数查看和说明
控制台-Home- Services Configurations -JDBC -Connection Pools- Configuration- Connections,选择要查看的数据源,然后点击Connections 后, 查看记录JDBC数据源相关性能参数。效果如下图7:
图7
相关参数说明: Initial Capacity:
初始数据库物理连接数。默认值为1。 Maximum Capacity
http://hi.baidu.com/knityster 第13页,共19 页 knityster@gmail.com Weblogic巡检技术说明 最大数据库物理连接数。默认值为25。 Capacity Increment
每次数据库物理连接增加数。默认值为1。 Statement Cache Type
prepared statements缓存的策略,LRU算法在有新的语句到来时,将最不经常被用得语句调整出缓存。FIXED算法为先进先出的算法。默认值为LRU。 Test Reserved Connections
如果勾选此项(为TRUE),则在连接被分配给调用者之前,都要经过测试,这会额外要求与数据库的反复连接。默认不勾选(为FALSE)。 Statement Cache Size
宏语句设定的静态缓存,大小由JDBC连接池配置时指定,调整这个数值的大小,有利于提高系统的效率。默认值为10。 Login Delay
创建数据库物理连接时的延时时间。默认值为0。
1.9 查看使用的Java编译器
通过Web控制台查看:
控制台-Home-domains- Configuration - General , 查看 “Java Compiler”的值,效果如图4。
标准的Java编译器是javac,但编译JSP servlets速度太慢,为了提高编译速度,可以使用sj或jikes编译器取代javac编译器。
更改Java编译器的方法:
在上述Java Compiler字段右边的空格中输入完整Java编译器路径,如:c:\\visualcafe31\\bin\\sj.exe,然后打开高级选项,在预规划到类路径“Append to classpath”后填写编译 Java 代码时为 Java 编译器类路径预规划的选项,如:BEA_HOME\\jdk141_02\\jre\\lib\\rt.jar。
1.10 查看Linux环境下的用户限制
查看文件:/etc/security/limits.conf, 设置示例如下:
weblogic soft nofile 65536 weblogic hard nofile 65536 weblogic soft nproc 16384 weblogic hard nproc 16384
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件已经被加入到启动
http://hi.baidu.com/knityster 第14页,共19 页 knityster@gmail.com Weblogic巡检技术说明 文件中。通过查看 /etc/pam.d/login 文件,确保其内存在如下字段:
session required pam_limits.so 注意: 这些值应该全部手工输入,最好不要用复制的方法。因为复制的时候,可能会包含了很多的奇怪的符号,从而导致在安装时出现很多的错误如: map lss.key ins_net-client.mk ins_plsql.mk ins_oem_agent 等等很多的错误。
linux limits.conf 文件说明
limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。
limits.conf文件中字段设置的格式如下: username|@groupname type resource limit
各字段说明:
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。
也可以用通配符*来做所有用户的限制。 type:有 soft,hard 和- 三种取值。
soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。 resource:有如下取值:
core - 限制内核文件的大小 date - 最大数据大小 fsize - 最大文件大小
memlock - 最大锁定内存地址空间 nofile - 打开文件的最大数目 rss - 最大持久设置大小 stack - 最大栈大小
cpu - 以分钟为单位的最多 CPU 时间 noproc - 进程的最大数目 as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
1.11 查看Weblogic已安装组件
查看Weblogic安装目录下的日志文件: /log/log.txt
[Added] 表示已安装组件,[Not Installed]表示未安装组件,例如:
http://hi.baidu.com/knityster 第15页,共19 页 knityster@gmail.com Weblogic巡检技术说明 2009-9-19 14:21:36 -- install \"WebLogic Platform\" 8.1.6.0 at C:\\bea\\weblogic81 release 8.1.6.0 [Added] |_____WebLogic Server [Added] | |_____Server [Added] | |_____Server Examples [Added] |_____WebLogic Workshop [Not Installed] | |_____Workshop Runtime Framework [Not Installed] | |_____WebLogic Workshop Application Developer Edition [Not Installed] | |_____Workshop Samples [Not Installed] |_____WebLogic Integration [Not Installed] | |_____Integration Server [Not Installed] | |_____WebLogic Workshop Integration Extension [Not Installed] | |_____Integration Examples [Not Installed] | |_____BPEL Import and Export Tools [Not Installed] | |_____TIBCO Rendezvous(TM) Control and Event Generator [Not Installed] |_____WebLogic Portal [Not Installed] | |_____Portal Server [Not Installed] | |_____WebLogic Workshop Portal Extension [Not Installed] | |_____Portal Examples [Not Installed] |_____Platform Samples and Utilities [Not Installed] |_____Platform Tour [Not Installed] 1.12 Weblogic自启动设置
以Windows为例,Linux类似。
方法一:采用boot.properties配置文件
在域的根目录下新建文件boot.properties,内容如下: username=weblogic password= weblogic
成功启动后Weblogic会自动对上述用户名和密码进行序列化,例如: #Mon Sep 21 00:16:16 CST 2009 password={3DES}ScmPh7LI2qqHzdFk/e2Tog\\=\\= username={3DES}ScmPh7LI2qqHzdFk/e2Tog\\=\\=
方法二:硬编码(不安全、不推荐) 编辑域的根目录下的startWebLogic.cmd :
在JAVA_OPTIONS 参数前增加如下两行WLS_USER=用户名,WLS_PW=密码,然
http://hi.baidu.com/knityster 第16页,共19 页 knityster@gmail.com Weblogic巡检技术说明 在${JAVA_OPTIONS} …… set WLS_USER=weblogic set WLS_PW=weblogic …… %JAVA_HOME%\\bin\\java 后增加-Dweblogic.management.username=${WLS_USER}
-Dweblogic.management.password=${WLS_PW}两条参数,完整的配置示例如下: %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.management.username=%WLS_USER% -Dweblogic.management.password=%WLS_PW% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy=\"%WL_HOME%\\server\\lib\\weblogic.policy\" weblogic.Server …… 1.13 收集Weblogic日志
方法一:推荐
通过Web管理控制台查看:Home-domains-mydomain-servers-testserver,点击最下端的“View server log”以查看系统日志,如下图8所示:
图8
http://hi.baidu.com/knityster 第17页,共19 页 knityster@gmail.com Weblogic巡检技术说明 方法一:
直接查看日志文件。
首先通过Home-domains-mydomain-servers-testserver- Logging 查看日志文件的配置和输出位置,然后到服务器上相应目录拷贝相应的日志文件即可。如下图9所示:
图9
2 Weblogic错误和解决办法
高端查询-webServer1.out 错误信息 Servlet cannot forward after response has been committed java.lang.NullPointerException java.lang.ClassCastException: \"java.sql.SQLException: 无法从套接字读取更多的数据\".> java.lang.StringIndexOutOfBoundsException: javax.transaction.xa.XAException处理方法或建议 http://forums.sun.com/thread.jspa?threadID=639865&messageID=3754819 空指针异常 类型转换异常 数据库操作异常 数组越界 数据库操作异常 程序设计 程序设计 程序设计 程序设计 程序设计 第18页,共19 页 错误来源 程序设计 http://hi.baidu.com/knityster knityster@gmail.com Weblogic巡检技术说明 : ORA-02050: transaction 9.3.208519 rolled back, some remote DBs may be in-doubt time (StuckThreadMaxTime) of \"3,600\" http://hi.baidu.com/knityster 第19页,共19 页 因篇幅问题不能全部显示,请点此查看更多更全内容