当前位置:文档之家› Weblogic 性能调优实战

Weblogic 性能调优实战

Weblogic 性能调优实战
Weblogic 性能调优实战

Weblogic 性能调优实战

我们的定位:我们是作为业务平台的提供商参与这个项目的,我们提供底层的开发平台,系统集成商在此基础上进行二次开发。

在项目从开发到部署的过程中遇到了很多的问题,也反映出很多问题。

一、怎么回事,跑得比猫还慢

项目开发完毕后部署在Ibm aix 小型机上,32G内存,16个cpu。应用服务器采用的是weblogic9.2,数据库是oracle10.0.2。上线后发现系统运行的非常缓慢,甚至比开发环境下的tomcat还要慢。于是开始排查原因,最开始是对SQL进行监控,优先考虑是数据库访问性能产生瓶颈。通过监控,发现很多业务需要执行大量的SQL语句,查看客户编写的相关代码,发现在查询数据时循环执行了大量SQL。主要原因在于他们在代码中循环调用了我们相关API,一个最典型的例子是通过用户ID查找用户NAME,他们在业务表格里没有保存用户name,而是在查询的时候通过用户ID查找用户name填充到页面,几乎每一个查询都是n+1。

另外由于平台使用了hibernate,使得oo编程得非常爽快,导致开发人员完全忽略了相应的数据库操作所带来的压力。很多业务逻辑直接通过PO叠加完成,把一些可以通过很少SQL 完成的逻辑全部分散放置到PO里,导致了大量PO的交互和SQL语句。

开始优化SQL,优化的同时增加大量业务缓存。但优化完毕后运行缓慢的现象依旧存在,性能有了一定的提升但是不是非常明显。继续优化,其中考虑过多频繁访问的数据使用内存数据库的方式。但是优化过后在tomcat上效果明显,部署到生产环境就问题依旧。于是考虑weblogic的配置问题,作为开发平台提供商,我们只是提供系统开发相关方面的支持,对于应用服务器和数据库服务器只是做基本的配置系统可运行即可。但是在这个问题上系统集成商咬定是我们平台的问题不放,并且存在一个很严重的问题:他们使用的是盗版的weblogic,这样根本就没有相应的技术支持。

问题的解决:最后是找了一个BEA曾经的开发人员,问题实际非常的简单,现场部署的weblogic默认是运行在32位机器上,与64位机器存在一定的不兼容。通过替换相应的jar 包,问题得到了解决,主要是IO方面。替换完毕后,速度提升了进30% 。该开发人员说,如果没有lisence,根本就不会得到这些替换的jar包。

二、内存耗尽了

访问速度的问题解决了,系统的使用量很快上来,马上遇到新的问题:内存耗尽了。严重到几乎每天都要out of memory一次。这种问题在客户现场频繁出现。

本地测试,tomcat,sun jdk 通过Jprofiler监测内存使用情况。在并发访问门户的情况下,内存确实存在暴涨的情况,100并发,内存使用立刻上升了150m左右,继续并发100,再增长150m。但是很快在抵达高峰时会有一次gc发生,内存使用稳定在200m,内存里大量char[]数组对象。疲劳测试,内存使用曲线并没有出现逐渐上升泄露的情况。换weblogic和jrocket测试,gc发生的更加频繁,内存使用稳定。

但是现场依旧频繁当机,内存根本释放不了,一直逐渐增长,典型的内存泄露。对系统缓存、单态对象包括spring管理的对象、IO流进行了统一排查,依旧没有找到内存泄露的原因。使用IBM 工具分析heapdump文件,结果还是大量的char[]数组对象占据内存,查找应用,找不到相关业务对象引用。

问题解决:问题解决是一篇偶尔搜到的oracle论坛的帖子,这里https://www.doczj.com/doc/0313584218.html,/forums /message.jspa?messageID=1040570 。原因在于oracle10的数据库驱动对statement最后执行的结果集有着引用,并且不会释放,目的在于通过内存而换取更好的性能。数据库连接采用的是weblogic的连接池,关于connection有个相关的statement cache设定,设定一个connection能够被缓存的statement个数,最大是1024,而现场就被设定为了1024!connection pool的connection个数被设置为了500 。真是个恐怖的设置。在将1024改为10后,内存使用量轰然倒地,稳定在1g左右。这个设置是在前面系统访问速度存在问题时由系统集成商的开发人员设置上去的,他们将所有和优化相关的参数全部开到了最大。这个问题要是用户购买的是正版的weblogic和oracle的话,相信也会很快得到解决。

三、线程阻塞

内存泄露的问题解决后,线程阻塞的问题浮出水面。系统集成商报告是线程死锁,通过分析工具其实是线程阻塞,主要问题在于系统用到了synchronized关键字,对工作流相关API 全部使用了synchronized,原因在这里:http: //https://www.doczj.com/doc/0313584218.html,/blog/205731 。分析发现一个工作项提交的操作在连接数据库时被挂起了20分钟!造成了大量线程的排队阻塞。被挂起的原因有很多种。我们采用的方法是将接口拆分和设置事务timeout时间。但是这显然不是一个好方法。最后是去掉所有的synchronized关键字,将同步的问题交由数据库解决,问题解决。

weblogic服务器优化配置详解

第一章概要 WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性。 试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态: 一修改运行队列线程数的值。在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。当任务加入一个WebLogic 实例,它就被放到执行队列中,然后分配给任务一个线程来运行。线程消耗资源,因此要小心处理这个属性——增加不需要的值,会降低性能。 二,如果可能,使用自带的性能包(NativeIOEnabled=true)。 三,使用特定的应用程序执行队列。 四,使用JDBC连接池时,修改下列属性: 驱动名称:使用小的驱动或者jDriver。 初始容量:设为与最大容量相同的值。 最大容量:其值至少应与线程数相同。 五,把连接池的大小设为与执行队列的线程数相同。 六,设置缓冲。 七,为Servlet和JSP使用多个执行队列。 八,改变JSP默认的Java编译器,javac 比jikes或sj要慢。 第二章优化WebLogic 提要: 为WebLogic启动设置Java参数。 设置与性能有关的配置参数。 调整开发与产品模式默认值。 使用WebLogic“自有的IO”性能包。 优化默认执行队列线程。 优化连接缓存。 如何提高JDBC连接池的性能。 设置Java编译器。 使用WebLogic集群提高性能。 监视WebLogic域。 一、为WebLogic启动设置Java参数 只要启动WebLogic,就必须指定Java参数,简单来说,通过WebLogic.Server 域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出错,BEA 公

linux中的weblogic性能调优

Linux中的Weblogic性能测试调整 一.操作系统参数调整 1.linux TCP连接数调整 通过命令:ulimit –n 查看当前最大TCP连接数,这表示当前用户的每个 进程最多允许同时打开多少个文件。一般系统默认为1024,在并发量大 的情况下肯定不够用。 修改此限制的最简单办法:ulimit –n 设置单一进程允许打开 的最大文件数。如果系统回显类似于“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-max 2.修改网络内核对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=128388607 net.core.wmem_max=128388607

Weblogic10.3_Windows优化设置

Weblogic10.3_Windows优化设置 优化说明 一、Weblogic服务程序设置 1、设置JDK内存 修改weblogic\user_projects\domain\bin下的seDomainEnv.cmd文件: 修改前: If”%JAVA_VENDOR%”=”Sun”( Set WLS_MEM_ARGS_64BIT=-Xms256m –Xmx512m Set WLS_MEM_ARGS_32BIT=-Xms256m –Xmx512m )else( Set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx512m Set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx512m ) Set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m Set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m 修改后: If”%JAVA_VENDOR%”=”Sun”( Set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx1024m Set WLS_MEM_ARGS_32BIT=- Xms512m –Xmx1024m )else( Set WLS_MEM_ARGS_64BIT=-Xms1024m –Xmx1024m Set WLS_MEM_ARGS_64BIT=-Xms1024m –Xmx1024m ) Set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m Set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m 说明:红色字体为修改的内容,具体修改值根据实际内存确定 ●-Xmx3550m:设置JVM最大堆内存为3550M。 ●-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置于-Xm相同,以 避免每次JVM动态分配内存所浪费的时间。 ●-XX:PermSize=256M:设置堆内存持久代初始值为256。(貌似是Eclipse等IDE 的初始化参数) ●-XX:MaxPermSize=512M:设置持久代最大值为512M 32位操作JDK内存系统:最大可这种1.5G,如果设置过大,会导致服务无法启动 64位操作JDK内存系统:最大设置为物理内存的60-80% 2、设置线程数: 修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd中在JAVA_OPTIONS中添加如下: Set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.threadpool.MinPoolSize=2000 Set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.threadpool.MaxPoolSize=4000 说明: JDK5.0以后每个线程栈大小为1M,但是操作系统对一个进程内的线程数还是

weblogic优化设置&调优参数及监控指标

优化设置 Weblogic服务程序设置: 1、设置JDK内存: 修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd文件:修改前: if "%JAVA_VENDOR%"=="Sun" ( set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m ) else ( set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m ) set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m 修改后: if "%JAVA_VENDOR%"=="Sun" ( set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx1024m set WLS_MEM_ARGS_32BIT=-Xms512m –Xmx1024m ) else ( set WLS_MEM_ARGS_64BIT=-Xms1024m –Xmx1024m set WLS_MEM_ARGS_32BIT=-Xms1024m –Xmx1024m ) set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m 说明:红色字体为修改的内容,具体修改值根据实际物理内存确定 ?-Xmx3550m:设置JVM最大堆内存为3550M。 ?-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次JVM动态分配内存所浪费的时间。

Weblogic性能调优经验

WEBLOGIC性能调优方案 1.查看当前线程池大小: 登录WEBLOGIC控制台,选择服务器-某服务器-监视-性能,可查看到当前最大线程数量。由于WEBLOGIC9取消了在页面进行调整线程大小的功能,需要在后台进行修改。 2.修改线程池大小: 进入服务器的目录D:\bea\user_projects\domains\base_domain\config,使用编辑器打开config.xml文件,找到如下段落: AdminServer 168.5.130.34z 在上面添加如下两行:默认10 1000 1000 添加后的结果: AdminServer

168.5.130.34 1000 1000 按上面的步骤,继续找到ProxyServer,以及所有MANAGE受管机的段落,分别添加上面的两行语句。最终结果如图所示:

Weblogic性能调优经验

Weblogic性能调优经验

WEBLOGIC性能调优方案 1.查看当前线程池大小: 登录WEBLOGIC控制台,选择服务器-某服务器-监视-性能,可查看到当前最大线程数量。由于WEBLOGIC9取消了在页面进行调整线程大小的功能,需要在后台进行修改。 2.修改线程池大小: 进入服务器的目录D:\bea\user_projects\domains\base_domain\config,使用编辑器打开config.xml文件,找到如下段落:

AdminServer 168.5.130.34z 在上面添加如下两行:默认10 1000 1000 添加后的结果:

AdminServer 168.5.130.34 1000 1000 按上面的步骤,继续找到ProxyServer,以及所有MANAGE受管机的段落,分别添加上面的两行语句。

weblogic性能优化

优化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参数,简单来说,通过WebLogi c.Server域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出 错,BEA 公司推荐你把这个命令写进脚本里。为了简化这个过程,你可以修改样例脚本里的默认值,样例脚本是提供WebLogic启动服务器的。 如果你用配置向导创建你的域,WebLogic启动脚本(startWebLogic.cmd)放在domain-name目录里。默认情况下,这个目录是BEA_HOME\user_pr ojects\domain\domain-name,BEA_HOME表示安装路径,domain-nam e是在配置模板中设置的域名称。

Weblogic性能调优-通过Thread Dump调优JAVA应用程序

理解和探查内存不足/内存泄漏OutOfMemoryError/Memory Leak Analyze & Utilities Demonstrate II(AIX)

理解和探查内存不足/内存泄漏 听完这次Webinar,您将能够: q了解Java基本内存管理基本概念 q了解发生内存不足/内存泄漏错误的原 因和症状 q了解如何解决内存不足/内存泄漏错误

MENU ?Java内存管理的基本概念 ?内存不足和内存泄漏错误的原因和症状 ?使用分析工具解决内存不足和内存泄漏错误?预防内存不足和内存泄漏?OutOfMemory分析实例

…Java内存 –Java堆内存(heap) …Java堆内存(heap): –是JVM用于分配Java对象的内存,包含活动对象和不可用对象 –堆大小通常是在服务器启动时使用java命令中的 –Xms(最小)–Xmx(最大)标志来定义。

…本地内存(native memory): –是JVM用于其内部操作的本地内存(非Java内存)–JNI代码和第三方本地模块(例如,本地JDBC驱动 程序)也使用本地内存 –最大本地内存大小取决于以下因素: ?操作系统进程内存大小限制 ?已经指定用于Java堆的内存 …进程内存大小: –32位操作系统,理论最大值2的32次方=4G –进程内存= Java内存+本地内存 +加载的可执行文件和库+操作系统保留内存

…垃圾回收 (Garbage Collection, GC):–JVM自动检测和释放不再使用的内存。 –Java运行时JVM会执行GC,这样程序员不再需要显 式 释放对象。 –通常在空闲内存降低到某一水平或内存分配达到某一 数量后自动触发。 …以下OutOfMemory简称OOM …以下Memory Leak简称ML …Heap简称“堆”

weblogic调优参数及监控指标

Weblogic调优参数及监控 weblogic调优参数 对Weblogic的调优主要从SEVER、ExecuteQueue、JDBC等几个方面的相关参数进行调优: 一、SERVER 在mydomain->Servers->myserver->Configuration->Tuning->“Enable Native IO”中: 1、Native IOEnabled TRUE,表示该Server使用本地I/O 2、SocketReaders 设置在执行线程中专用做Socket Readers的百分比 3、Maximum Open Sockets 最大打开Socket数 4、Stuck Thread MaxTime 堵塞线程时间,超过这个时间没有返回的执行线程,系统将认为是堵塞线程 如果weblogic认为某个队列中的所有的线程全部堵塞的话,weblogic将会增加执行线程的数量。 注意:执行线程的数量一旦增加,目前weblogic不会去减少他,如果增加了一些线程以后再次出现overflow的警告,weblogic会继续增加执行线程的数量,一直到达到上限为止。 5、Stuck Thread Timer Interval 系统检查堵塞线程的时间间隔 6、Low Memory GC Threshold 当可用内存小于该百分比时,垃圾回收启动 7、Low Memory Granularity Level 当两次检测的可用内存变化超过该百分比时,垃圾回收启动 8、Low Memory Sample Size 在一次检测中的取样次数 9、Low Memory Time Interval 检测间隔时间 10、Accept Backlog

Weblogic常用监控方法及指标

性能测试工作室,专注于性能测试技术研究(https://www.doczj.com/doc/0313584218.html,)Weblogic常用监控指标 JMSRuntime JMSServersCurrentCount 返回当前JMS服务的连接数ConnectionsCurrentCount 返回本JMS服务器上当前的连接数JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数JVMRuntime HeapSizeCurrent 返回当前JVM堆中内存数,单位时字节HeapFreeCurrent 返回当前JVM堆中空闲内存数,单位时字节ExecuteQueueRuntime ExecuteThreadCurrentIdleCount 返回队列中当前空闲线程数PendingRequestOldestTime 返回队列中最长的等待时间PendingRequestCurrentCount 返回队列中等待的请求数 Queue Length 队列长度 JDBCConnectionPoolRuntime WaitingForConnectionHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大等待连接数WaitingForConnectionCurrentCount 返回当前等待连接的总数 MaxCapacity 返回JDBC池的最大能力 WaitSecondsHighCount 返回等待连接中的最长时间等待者的秒数ActiveConnectionsCurrentCount 返回当前活动连接总数ActiveConnectionsHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大活动连接数 注: weblogic通常监控JVM和执行队列,JDBC连接池,其中执行队列最关键的指标是Queue Length 队列长度

Weblogic性能调优 V1.0

Weblogic 10.3.1.0 性能调优方案 V1.0 一、方案背景 本文描述的在Suse Linux Enterprise Server11 操作系统下Weblogic 10.3.1.0 性能调优,硬件的系统比较差,是由8core CPU,16G内存分离4个操作系统,每个操作系统是2core CPU,4G的内存,硬件系统的配置不是很高。 由于新框架在Weblogic10 下运行速度比较缓慢,需要对weblogic 容器的一些参数进行重新设置,以便提高新框架的运行速率,新框架包括登录页面、角色管理、管理员管理、日志管理、模板管理以及字典库管理,使用框架的技术是SSH3。安装完Weblogic 10.3.1.0后,Weblogic的一些参数都是默认参数,在linux中需要对一些参数进行重新设置。 二、优化部分 本次优化,主要以服务器启动、参数设置、应用登录进行优化 2.1、创建域慢启动慢的特征:创建域到70%时,进程长时间等待,创建 域启动Weblogic的时候也是长时间等待。 原因:线程挂在security相关的随机数生成上面,由于JDK的bug导致而成的。 解决办法:修改Linux Weblogic上的jdk $JAVA_HOME/jre/lib/security/java.security文件 将securerandom.source = file:/dev/urandom修改为: Securerandom.source = file:/dev/./urandom 这样可以解决任何一个域weblogic启动慢的问题 由于windows的实现机制和linux不一样,所以不存在启动慢的问题 2.2、修改JAVA_VM、Cache等相关参数 在$DOMAIN_HOME/bin/setDomainEvn.sh中,修改如下参数:if [ "${JAVA_VENDOR}" = "Sun" ] ; then WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m" export WLS_MEM_ARGS_64BIT WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m" export WLS_MEM_ARGS_32BIT else WLS_MEM_ARGS_64BIT="-Xms512m -Xmx512m" export WLS_MEM_ARGS_64BIT WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m" export WLS_MEM_ARGS_32BIT fi 修改为:

Weblogic中间件运维经验汇总

Weblogic中间件运维经验汇总 目录 关于Weblogic参数调优的运维经验 (2) Weblogic性能调优的处理方法 (5) 关于输电项目Weblogic安装的运维经验 (8) Weblogic回收数据库连接数配置的方法 (14) 在Apache和Weblogic中分别部署静态页面的方法 (17) Weblogic Server性能调优经验 (20) WeblogicJVM堆参数设置方法 (24)

关于Weblogic参数调优的运维经验 报送单位:北京公司审核人:类型:业务应用 关键字:GC垃圾回收 1、引言 为了提高维护人员运维水平,以集中与分享日常运行维护经验为目的,现进行典型经验的编制。 2、现象描述 部分应用服务器出现宕机现象,在F5上查看时已经掉出集群状态。 3、处理过程 停止宕机应用服务器上的Weblogic进程。 /home/weblogic/bea/user_projects/domains/pms/bin/setDomainEn v.sh文件中的启动内存大小并添加垃圾回收机制,修改后如下:MEM_ARGS="-Xms5248m -Xmx5248m -Xmn1536m -XX:SurvivorRatio=6 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=20 -XX:+UseFastAccessorMethods -XX:+AggressiveOpts"

3、修改完成后重启Weblogic服务。 4、原因分析 在收到报警信息后,对后台日志进行查看,报错信息如下: Exception in thread "CBM_正常处理任务线程" https://www.doczj.com/doc/0313584218.html,ng.OutOfMemoryError: Java heap space at oracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.ja va:868) at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatem ent.java:1045) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPre paredStatement.java:839) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatem ent.java:1132) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrepa redStatement.java:3316) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePrepare

weblogic10性能优化及相关技巧

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 https://www.doczj.com/doc/0313584218.html,nguage=Zh -Duser.region=CN 例如:

WebLogic Server 8性能调优_BEA工程师

WebLogic Server 8.1 Performance Tuning Guide ?用户数、请求数、允许的响应时间 ?CPU、内存、网络等信息 ?Solaris调优 o ndd –set /dev/tcp tcp_time_wait_interval 60000, 将socket的关闭保持时间缩短为60秒(默认为240秒) o Solaris 2.7之前,tcp_time_wait_interval的命名是tcp_close_wait_interval o其它可用ndd –set调整的参数 参数建 议值 /dev/tcp tcp_time_wait_interval600 00 /dev/tcp tcp_conn_req_max_q163 84 /dev/tcp tcp_conn_req_max_q0163 84 /dev/tcp tcp_ip_abort_interval600 00 /dev/tcp tcp_keepalive_interval720 0000 /dev/tcp tcp_rexmit_interval_initial 400 0 /dev/tcp tcp_rexmit_interval_max100 00

/dev/tcp tcp_rexmit_interval_min300 /dev/tcp tcp_smallest_anon_port327 68 /dev/tcp tcp_xmit_hiwat131 072 /dev/tcp tcp_recv_hiwat131 072 /dev/tcp tcp_naglim_def1 /dev/ce instance0 /dev/ce rx_intr_time32

weblogic调优笔记

weblogic培训笔记(转载) 上一篇/ 下一篇 2009-05-21 16:29:55 / 个人分类:服务配置 查看( 97 ) / 评论( 0 ) / 评分( 0 / 0 ) weblogic Server内部结构和相关的配置 weblogic Server内部结构图: (一) 原理简单说明 服务器启动,就会绑定到相应的端口,并为一个端口分配一个线程以接受连接请求,一旦服务器接受到连接请求并建立好连接以后,监听线程将处理权交给套接字复用器,套接字复用器进行一定的处理,并会负责选择利用那个执行队列并将请求置入其中。当有一个请求进入执行队列,就会有一个空闲的执行县城从该队列里面取走并向调用者返回结果。 (二) 执行队列和执行线程的相关配置 执行线程数量有一定的限制,在服务器启动的时候,就已经形成了一个含有一定数量执行线程的池,执行线程可能跨servlet,ejb和jdbc等,由于执行线程仅当程序成功结束或者出现异常才能被释放继续处理其他请求,所以如果执行线程执行的不够快,而请求又多的情况下,就会造成执行队列的阻塞。 相关的配置信息有:

server菜单—〉configuration页---〉高级配置---〉Config Execute Queues中的配置项如下: 1、Queue Length队列长度,执行队列的长度 2、Queue Length Threshold Percent 一个百分数,当request的数量达到队列长度的这个比例的时候,weblogic会发出overflow的标志信息。 3、Thread Count 服务器初始创建的执行线程的数量 4、Thread Increase 如果weblogic发出overflow的标志信息,weblogic会尝试增加这个数量的执行线程,以解决处理矛盾。 5、Threads Maximum最大执行线程数 6、Threads Minimum最小执行线程数 7、Thread Priority线程优先级 另外server菜单—〉configuration页---〉tuning子页中还有一些相关的配置: 1、 Stuck Thread Max Time 黏联线程时间,超过这个时间没有返回的执行线程,系统将认为是黏联线程。 2、 Stuck Thread Timer Interval 系统检查黏联线程的时间间隔 如果weblogic认为某个队列中的所有的线程全部黏联的话,weblogic将会增加执行线程的数量。 注意:执行线程的数量一旦增加,目前weblogic不会去减少他,如果增加了一些线程以后再次出现overflow 的警告,weblogic会继续增加执行线程的数量,一直到达到上限为止。 (三) 套接字复用器的相关配置

Weblogic配置及站点部署优化

Weblogic 配置与站点部署+优化 一,软件名称与版本: oepe-indigo-installer-12.1.1.0.1.0349-12.1.1-win32.exe 软件下载地址: /nt/middleware/11g/wls/1211/oepe-indigo-installer-12.1.1.0.1.0349-12.1.1-win32.exe 二,安装: 直接双击oepe-indigo-installer-12.1.1.0.1.0349-12.1.1-win32.exe 出现如下界面表示开始进入安装: 出现如下界面后点击下一步: 下图是选择安装路径默认路径为C:\Oracle\Middleware 我这将安装路径改为:D:\Oracle\Middleware 然后直接点下一步:

出现如下界面后直接点击一下步既可: 然后选择YES

选择完成后出现如下图我选择的典型安装然后直接下一步既可; 以下界面是安装目录然后点击下一步:

出现如下界面后接着选择下一步: 直接点击一下步: 下图界面表示进入最后安装阶段:

出现如下界面后表示安装完成: 启动WEBLOGIC后出现如下图界面 点击创建一个新域:

选择创建新的Weblogic域然后选择默认(如下图界面所示)直接点击下一步: 下图是域名称与域配置文件所在位置也可以自行更改路径我这里不做更改直接用默认的然后点击下一步; 下图界面是对域登陆用户名与密码的设置选项默认名为weblogic 我这里不做更改直接用这个用户名密码按自己的需求设置既可密码设置完成后直接点击下一步:

WebLogic调优参数配置

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优化指南

优化WebLogic 一、为WebLogic启动设置Java参数 垃圾收集(GC)是指JVM释放Java堆中不再使用的对象所占用的内存的过程,而Java堆(Heap)是指Java应用程序对象生存的空间。堆大小决定了GC的频度和时间。堆越大,GC频度低,速度慢。堆越小,GC频度高,速度快。所以GC和堆大小是一组矛盾。为了获取理想的Heap堆大小,需要使用-verbosegc参数(Sun jdk: -Xloggc:)以打开详细的GC输出。分析GC的频度和时间,结合应用最大负载所需内存情况,得出堆的大小。 通常情况下,我们建议使用可用内存(除操作系统和其他应用程序占用之外的内存)70-80%,为避免堆大小调整引起的开销,设置内存堆的最小值等于最大值即:-Xms=-Xmx。而为了防止内存溢出,建议在生产环境堆大小至少为256M(Platform至少512M),实际环境中512M~1G左右性能最佳,2G以上是不可取的,在调整内存时可能需要调整核心参数进程的允许最大内存数。对于sun 和hp的jvm,永久域太小(默认4M)也可能造成内存溢出,应增加参-XX:MaxPermSize=128m。建议设置临时域-Xmn的大小为-Xmx的1/4~1/3, SurvivorRatio为8 堆栈内存优化,修改配置文件: WL_HOME=C:\bea\weblogic81 "%WL_HOME%\common\bin\commEnv.cmd" :bea#如果采用的上bea的JDK # JVM Heap(堆内存)最小尺寸为96M,最大尺寸为256M set MEM_ARGS=-Xms96m -Xmx256m :sun#如果采用的是sun的JDK # JVM Heap(堆内存)最小尺寸为32M,最大尺寸为200M #公共变量对象的内存限制: PermSize:最小尺寸, MaxPermSize :最大允许分配尺寸 set MEM_ARGS=-Xms32m -Xmx200m -XX:MaxPermSize=128m 监视堆栈使用情况: 下载JRockit JDK,该JDK已经自带了JRockit Mission Control工具,目前好像还没有单独下载JRockit Mission Control的地方,于JRockit JDK进行了绑定下载; 在C:\bea\jrockit81sp5_142_08\console目录里面运行: C:\bea\jrockit81sp5_142_08\bin\java –Xmanagement -jar ManagementConsole.jar 如何监控weblogic呢? 修改weblogic启动脚本startWebLogic.cmd,在里面加入-Xmanagement启动参数: %JAVA_HOME%\bin\java -Xmanagement %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% https://www.doczj.com/doc/0313584218.html,=% SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="% WL_HOME%\server\lib\weblogic.policy" weblogic.Server

WebLogic Server 性能及调优-调整资源适配器调优

WebLogic Server 性能及调整 -调整资源适配器 本附录向资源适配器开发人员介绍了一些最佳实践。 ?资源适配器的类加载优化 ?连接优化 ?线程管理 ?InteractionSpec 接口 资源适配器的类加载优化 可以将资源适配器类打包到一个或多个JAR 文件中,然后将JAR 文件放置到RAR 文件中。这些文件称为嵌套的JAR 文件。当在RAR 文件中嵌套JAR 文件并需要通过类加载器加载类时,则必须要针对每个必须加载的类打开、关闭和迭代RAR 文件中的JAR。 如果RAR 文件中的JAR 数量很少且相对较小,则不会对性能产生太大的影响。另一方面,如果有很多JAR 文件,而且JAR 很大,则会对性能造成较大的影响。 为了避免出现这些性能问题,可以执行下列操作之一: 1以展开格式部署资源适配器。这可以消除JAR 嵌套,因此可以减少在查找类时引起的性能下降。 1如果不可以选择以展开格式部署资源适配器,则可以在RAR 文件中展开JAR。这样同样取消了JAR 的嵌套形式,并因此显著提高了类加载的性能。 连接优化 BEA 建议资源适配器实现J2CA 1.5 Specification的7.14.2 和7.14.2 两部分描述的可选增强功能。通过实现这些接口,WebLogic Server 可以提供若干只有依靠这些接口才可以使用的功能。 通过7.14.1 一节中描述的Lazy Connection Association,服务器能够自动清除未使用的连接,并防止应用程序独占资源。通过7.14.2 一节中描述的Lazy Transaction Enlistment,应用程序能够在打开连接之后启动事务。

相关主题
文本预览
相关文档 最新文档