WebLogic10常见性能优化及相关技巧目录一、中文字符集的加载方法 (2)二、服务启动缓慢的解决方法 (3)三、文件损坏造成无法启动服务的解决方法 (3)四、打开文件数的优化 (4)五、虚拟机内存的优化 (5)六、连接池的优化 (5)七、服务节点访问超时的优化 (8)八、服务节点访问线程数的优化 (10)九、部署应用程序的优化 (10)十、日志的优化 (11)十一、清空输出日志nohup.out的方法 (13)十二、通过管理控制台对weblogic10运行情况进行监测 (13)十三、windows下weblogic控制台运行日志输出到文件 (15)十四、忘记weblogic管理控制台密码的处理方法 (16)一、中文字符集的加载方法加载中文字符集的必要性:1、解决某些情况下服务无法启动(启动需要读取含中文的xml)。
2、解决应用程序运行异常(程序运行需要中文字符集的支持)。
3、方便查看相关系统运行日志。
一般在linux或aix操作系统上会出现中文字符集的问题加载方法:Linux操作系统修改域目录下xxx_domain/bin/setDomainEnv.sh文件,在文件中增加内容export LANG=zh_CN.GBK例如:IBM Aix操作系统修改域目录下xxx_domain/bin/setDomainEnv.sh文件,在文件中的java_options中增加内容:-Ddefault.client.encoding=GBK -Dfile.encoding=GBK nguage=Zh -Duser.region=CN例如:注意:要使上述修改方法有效,前提是linux/Aix操作系统安装时需要安装中文字符集,系统规划时要跟硬件集成商进行说明。
二、服务启动缓慢的解决方法有些时候我们在启动应用服务的时候,启动特别慢,有时慢到需要好几个小时,这实际是JVM在Linux/Aix下的bug,是由于服务想调用一个随机函数但取不到造成的。
解决方法:修改域目录下xxx_domain/bin/setDomainEnv.sh文件,在文件中的java_options中增加内容:-Djava.security.egd=file:/dev/zero例如:三、文件损坏造成无法启动服务的解决方法有些时候由于系统的非正常关机或其它特殊的情况,造成服务节点无法启动(启动到一半然后自动关闭jvm进程,提示日志文件错误等)。
解决方法:到域目录下找到xxx_domain/servers/下的对应的服务名的文件夹,将该文件删除,并重启服务。
(注意删除文件后如果是产品模式则需要重新创建一下boot.properties文件,进行自动登录校验)。
四、打开文件数的优化Weblogic默认打开文件数是1024个,如果系统对文件操作比较多的话weblogic就会报文件打开数过多的错误。
一般我们在java中操作文件时,要及时对文件进行关闭。
解决方法:到weblogic安装目录下找到/bea/wlserver_10.3/common/bin/commEnv.sh文件,找到resetFd()将该函数的内容进行注释,然后增加内容:ulimit -n 4096例如:五、虚拟机内存的优化Weblogic10默认java虚拟机内存是512M一般情况下够用,但在大并发的情况下还是需要调整的。
调整原则1、设置的大小不能超过硬件内存剩余的大小(linux查看当前内存剩余的命令:free -m)2、不建议把jvm设置得过大,一般最大设置到2048M即可,设置如果超过3G容易造成java进程崩溃。
设置方法:Windows操作系统域目录下找到setDomainEnv.cmd文件set MEM_ARGS=-Xms2048m –Xmx2048mset MEM_PERM_SIZE=-XX:PermSize=128mset MEM_MAX_PERM_SIZE=-XX:MaxPermSize=256mLinux或Aix操作系统域目录下找到setDomainEnv.sh文件MEM_ARGS="-Xms2048m –Xmx2048m"MEM_PERM_SIZE="-XX:PermSize=128m"MEM_MAX_PERM_SIZE="-XX:MaxPermSize=256m"六、连接池的优化1、对连接池初始化大小的设置连接池数量并不是越大越好,设置需要兼顾数据库的处理能力,如果是两台机器做weblogic集群,建议连接池初始化大小不要超过100,四台机器做weblogic集群,建议连接池初始化大小不要超过50 设置方法:登录weblogic管理控制台:http://192.168.0.1:1234/console2、对连接池有效性检查的设置在网络条件不好的情况下,必须要进行连接池有效性检查设置,否则我们的系统会频繁报错。
还有个好处就是重启数据库不用再重启weblogic,数据库启来后连接池会自动连接。
设置方法:3、连接池自动收回时间的设置在某些情况下,我们的应用服务器没有任何压力,数据库也没有压力,可连接池总是被占满,这种情况大多是由于我们测程序没有对连接池进行及时的关闭造成的,但我们又找不到程序错误的根源,这时我们可以开启weblogic的连接池空闲回收机制。
一般我们设置100s 如果连接100s 后没有被使用,则自动回收到连接池当中。
设置方法:七、服务节点访问超时的优化1、设置阻塞线程最长时间weblogic服务器默认阻塞线程最长时间是600s,一般情况下够用,但有些时候我们的程序在做大业务时可能要超过10分钟。
这样我们需要将阻塞线程时间加大。
设置方法:设置完后别忘了要保存。
2、修改本地注册表客户端浏览器有访问超时的限制,一般情况下是10分钟,即浏览器访问weblogic服务器如果10分钟没有反应,则浏览器会自动断开与weblogic服务器的连接。
修改方法:新建一个txt文本文件,添加如下内容:Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]"KeepAliveTimeout"=dword:00a4cb80"ServerInfoTimeout"=dword:00a4cb80"ReceiveTimeout"=dword:00a4cb80[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Styles] "MaxScriptStatements"=dword:00989680并将txt文件改名为test.reg文件在客户端,鼠标双击新建的test.reg注册表文件,进行注册表的修改。
在这里我们设置的是3600S,然后重启电脑即可。
3、修改F5的连接超时时间如果现场用到了负载均衡器F5,客户端的访问超时时间可能与F5的设置也有关系,在系统实施阶段,我们需要提前跟硬件集成商要求修改F5的连接超时时间,我们一般也设置成3600S或更长一些。
八、服务节点访问线程数的优化Weblogic10一般情况下不需进行线程调优,实践证明,修改线程数性能提升并不明显。
线程数也不是越大越好,我们一般设置成2000-4000即可。
设置方法:找到域目录下的xxx_domain/bin/setDomainEnv.sh文件,在文件中的java_options中增加内容:-Dweblogic.threadpool.MinPoolSize=2000-Dweblogic.threadpool.MaxPoolSize=4000例如:JAVA_PROPERTIES="${JAVA_PROPERTIES} ${WLP_JAVA_PROPERTIES}"export JAVA_PROPERTIESJAVA_OPTIONS="${JAVA_OPTIONS} ${JAVA_PROPERTIES}-Dwlw.iterativeDev=${iterativeDevFlag} -Dwlw.testConsole=${testConsoleFlag}-Dwlw.logErrorsToConsole=${logErrorsToConsoleFlag}-Dweblogic.threadpool.MinPoolSize=2000 -Dweblogic.threadpool.MaxPoolSize=4000" export JAVA_OPTIONS九、部署应用程序的优化取消jsp与Servlet的有效性检查,将检查频率改成-1,例如:十、日志的优化Weblogic频繁地写日志也会影响到性能,在这里我们取消不必要的日志,降低日志记录级别,也能提高一些性能。
1、Weblogic日志设置:十一、清空输出日志nohup.out的方法如果我们的weblogic服务是通过nohup命令进行启动的,域目录下会自动生成一个nohup.out文件,用来记录系统运行时日志的输出,这个文件如果长时间不进行清空,会占用应用服务器的硬盘空间。
清空方法:到域目录下执行:’’ > nohup.out十二、通过管理控制台对weblogic10运行情况进行监测1、监控连接池的使用情况一般情况下,当前连接数量不会超过我们设置的连接池的数量,如果连接池被占满,说明应用服务器压力比较大,或者是某些业务模块运行比较慢,造成连接池的等待。
可以适当增加连接池的数量,并检查我们的业务程看哪些模块运行速度慢,进行程序的优化。
2、监控队列执行情况一般情况下,队列等待应该为0,如果有等待的队列,说明当前应用服务器的压力比较大,这时可以监控数据库的运行情况,一般是由于我们的应用程序性能低下造成的。
十三、windows下weblogic控制台运行日志输出到文件Windows下的weblogic启动后为一个dos窗口,很难记录和显示所有程序运行的日志信息。
在这里,我们可以在域下创建一个批处理文件,来调用startWebLogic.cmd,将日志输出到文件。
用记事本新建一个startWebLogic.bat文件,文件内容如下:set filename=%date:~0,4%%date:~5,2%%date:~8,2%.txtstartWebLogic.cmd > %filename% 2>&1 &然后保存startWebLogic.bat文件,并将该文件拷贝到startWebLogic.cmd文件同一级目录,运行startWebLogic.bat文件,即在当前目录下生成一个以当前日期命名的日志文件,程序运行的日志都会记录在该文件当中,此时的dos窗口将不会实时显示日志信息,实时的日志信息会写到当前新生成的日志文件当中。