WEBLOGIC启动后,重启后控制台进入缓慢、延迟,探查WEBLOGIC操作

原创 2013年12月04日 09:43:52



本文说的是解决过程,可直接点击本行略过探查内容,跳到最后的解决办法!!


现象:

1、WEBLOGIC安装在 CENTOS openSUSE 等LINUX或者UNIX机器上,无论是虚拟机或者PC或者服务器

2、创建简单domain,启动后,第一次进入控制台输入用户密码后出现管理界面,每次访问控制台速度均正常。

3、重启weblogic server,访问控制台,输入用户密码后,无法出现管理界面,可能等待5-10分钟,甚至更长。


尝试:

1、捕捉 Thread dump 未发现异常

2、编写建档应用部署,重启weblogic server 后,应用可正常访问,无异常,说明问题在Admin console上

3、重启SERVER服务器(操作系统)后,启动weblogic正常

4、startWeblogic.sh 脚本 中JAVA_OPTIONS中开启-verbose:gc ,再次重启weblogic server,输入用户密码访问控制台 ,未发现gc大量收集阻塞

5、startWeblogic.sh 脚本 中JAVA_OPTIONS中开启-verbose:class ,再次重启weblogic server,输入用户密码访问控制台 ,观察如下:

[Loaded com.bea.console.utils.CSRFUtils from file:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/consoleapp/webapp/WEB-INF/lib/console.jar]
[Loaded com.bea.security.utils.random.AbstractRandomData from file:/home/weblogic/Oracle/Middleware/modules/com.bea.core.common.security.utils_1.0.0.0_6-0-3-0.jar]
[Loaded com.bea.security.utils.random.SecureRandomData from file:/home/weblogic/Oracle/Middleware/modules/com.bea.core.common.security.utils_1.0.0.0_6-0-3-0.jar]
[Loaded java.security.ProviderException from /opt/jdk1.6.0_21/jre/lib/rt.jar]

HANG.....5-10分钟

[Loaded weblogic.transaction.internal.ServerCheckpoint from file:/home/weblogic/Oracle/Middleware/modules/com.bea.core.transaction_2.6.1.0.jar]
[Loaded sun.security.provider.NativePRNG$RandomIO$1 from /opt/jdk1.6.0_21/jre/lib/rt.jar]
[Loaded weblogic.utils.Hex from file:/home/weblogic/Oracle/Middleware/modules/com.bea.core.utils_1.8.0.0.jar]
[Loaded weblogic.management.mbeanservers.internal.JMXConnectorSubjectForwarder$35 from file:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar]
[Loaded weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase$8 from file:/home/weblogic/Oracle/Middleware/modules/com.bea.core.management.jmx_1.4.0.0.jar]
[Loaded com.sun.jmx.mbeanserver.Repository$ObjectNamePattern from /opt/jdk1.6.0_21/jre/lib/rt.jar]
[Loaded weblogic.management.mbeanservers.domainruntime.internal.FederatedMBeanServerInterceptor$1 from file:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar]
[Loaded org.apache.taglibs.standard.tag.common.fmt.ParamSupport from file:/home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/consoleapp/APP-INF/lib/standard.jar]
......

在输入用户密码后,控制台输出停止,等待5-10分钟后,继续。那么之前操作的值得怀疑的地方是加载了com.bea.console.utils.CSRFUtils、com.bea.security.utils.random.AbstractRandomData、com.bea.security.utils.random.SecureRandomData、java.security.ProviderException4个类,这4个类在控制台日志后面都跟有包名。

拿到包后,解压,反编译。大概逻辑就是为了避免CSRF(Cross-site request forgery),需要产生一个随机实例以提供随机字节、整数、长整数等

这里使用随机数的代码是:AbstractRandomData 类中 的

this.random = SecureRandom.getInstance("SHA1PRNG");
然后再用random.nextXxxx()。

之前不觉得这句有问题,后来查了JDK才知道。这个是使用系统的随机数设备(PRNG:伪随机序列发生器  pseudo-random number generator),当调用nextXxx方法时,系统提供一个随机数使用。

正点来了

linux或者部分unix系统提供随机数设备是/dev/random 和/dev/urandom ,两个有区别,urandom安全性没有random高,但random需要时间间隔生成随机数。jdk默认调用random。


再后来,终于在weblogic的官方文档中 Monitoring and Troubleshooting 找到了 Avoiding JVM Delays Caused By Random Number Generation 这样一个标题。摘录如下:



The library used for random number generation in Sun's JVM relies on /dev/random by default for UNIX platforms. This can potentially block the Oracle WebLogic Communication Services process because on some operating systems /dev/random waits for a certain amount of "noise" to be generated on the host machine before returning a result. Although /dev/random is more secure, Oracle recommends using /dev/urandom if the default JVM configuration delays Oracle WebLogic Communication Services startup.

To determine if your operating system exhibits this behavior, try displaying a portion of the file from a shell prompt:

head -n 1 /dev/random
Open the $JAVA_HOME/jre/lib/security/java.security file in a text editor.

Change the line:

securerandom.source=file:/dev/random
to read:

securerandom.source=file:/dev/urandom
Save your change and exit the text editor.

其中说到:可通过 head -n 1 /devrandom 查看是否你的系统会出现伪随机数提供等待。OK就这个,试了一下,果然,在服务器第一次启动后,这个可以快速提供一个值,但当再次调用时发生等待。


解决办法:

永久:oracle 说修改 $JAVA_HOME/jre/lib/security/java.security  文件,替换securerandom.source=file:/dev/random 为 securerandom.source=file:/dev/urandom。对所有使用JVM的应用生效。(这个永久的方法,这里面有个问题,就是设置时候实际应该设置为securerandom.source=file:/dev/./urandom,否则不生效

DOMAIN临时:修改startWeblogic.sh文件,JAVA_OPTIONS="${SAVE_JAVA_OPTIONS} -Djava.security.egd=file:/dev/./urandom"


后继的SecureRandom 测试学习

编写JAVA类如下,运行测试,第一次正常,第二次等待,重启服务器后第一次又正常。启动加入参数 -Djava.security.egd=file:/dev/./urandom 正常

java -Djava.security.egd=file:/dev/./urandom Test

源码如下:

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.Security;

public class Test {
        public static void main(String[] args) {
                try {
                        System.out.println("Begin to get SecureRandom Instance.");
                        SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
                        System.out.println("SR is ready for use....");
                        System.out.println("Next double is :" + sr.nextDouble());

                } catch (NoSuchAlgorithmException e) {
                        e.printStackTrace();
                }
        }
}

结束语:

唉,这些可能影响应用的东西应该在安装文档之前就应该执行的检查啊,希望甲骨文这个地方效仿IBM ,安装文档执行检查,安装包提供preInstallCheck脚本,以避免异常。





相关文章推荐

weblogic 第一次进入控制台特别的慢处理方法

实际是JVM在Linux下的bug   他想调用一个随机函数   但取不到   暂时的解决办法是   1)较好的解决办法: 在Weblogic启动参数里添加 “-   Djava.secur...

linux下如何启动和关闭weblogic

在你定义的域中可以找到如下命令: /[youHome]/domains/[yourDomain]/startWebLogic.sh /[youHome]/domains/[yourDomain]/...

WebLogic:访问管理控制台

1,通过http://localhost:7001/console可以访问控制台,图形化界面。 访问这个控制台,必须先启动管理服务器。 进入到创建的域的目录F:\java\WebLogic\use...

【整理】weblogic下发步骤使用命令行代替控制台界面

项目要求项目下发时不用进控制台界面操作,直接用命令行(头都大了) 一开始只知道 ./startWebLogic.sh ./stopNodeManager.sh这怎么能解决啊。。。啊。。。 整个下发过程...

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...

Matlab绘图-很详细,很全面

Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Ma...

CT图像重建技术

由于csdn贴图不方便,并且不能上传附件,我把原文上传到了资源空间CT图像重建技术 1.引言 计算机层析成像(Computed Tomography,CT)是通过对物体进行不同角度的射线投影测量而...

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串  find .|xargs grep -ri "IBM"  查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名  find .|xargs g...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEBLOGIC启动后,重启后控制台进入缓慢、延迟,探查WEBLOGIC操作
举报原因:
原因补充:

(最多只允许输入30个字)