weblogic 优化大全
09-WebLogic性能调优讲解

监控工具
WebLogic Server的控制台
cpu 内存
JDBC
辅助的工具
Jprobe
Optimizit
Vtune TowerJ Performance
J2EE 应用程序体系结构
Static Content Layer Presentation Layer
State Data
调优
通常应用系统会根据用户数、并发数、用户的行为等
等来确定具体的性能目标,
如果确定应用程序不能满足性能目标,那么就需要优
化、重构程序并调整JVM、应用服务器、数据库、OS 或者改变硬件配置等等
影响Java 性能的主要因素
硬件,如CPU、内存、体系结构等等
操作系统 数据库系统 JVM 应用服务器
Application Server
request-handling threads enough? Garbage collection DB connection pool number
Database server
Shared data Unnecessarily strict isolation levels
Pool资源包括: JDBC Connection Pool Socket Pool Object Pool
ObjectPool (Class p_class, int size) Object getObjectFromPool() void returnObjectToPool(Object p_object) synchronized expandObjectPool()
WebLogic性能调优和集群部署

WebLogic术语
网络通道
一种可配置资源,用于定义与 WebLogic Server 的网络连接的特性 网络通道允许定义更多端口并限制所接受的协议
为特定服务器实例配置的每个通道都必须具有监听地址、监听端口和协 议的唯一组合 一个通道只能分配给一个服务器实例
一个服务器实例可以分配多个通道
分配通道时,则请确保它们使用的地址和端口号组合不相同
Weblogic 建域
WebLogic域管理
配置向导-欢迎窗口
31
配置向导-选择域源
32
配置向导-指定域名和位置
33
配置向导-配置管理员用户名和口令
34
配置向导-配置服务器启动模式和JDK
35
配置向导-根据需要选择可选配置
(包括管理服务器、受管服务器、集群、计算机和安全存储 等)
36
配置向导-总结窗口
37
WebLogic基础知识
WebLogic术语 WebLogic 安装
Weblogic 建域
WebLogic域管理
域目录
域名 启动与停止脚本
域的根配置
WLDF, JDBC, JMS, 与 Security配置文件
未决的配置修改
域内每个受管服务器的子目录
配置文件
config.xml
<domain (schema locations)> <name>wl_server</name>
在Unix或Linux上的安装,如果是.jar的安装程序
PATH=JAVA_HOME/bin:$PATH export PATH java -jar filename.jar -mode=silent -silent_xml=/path_to_silent.xml
weblogic部署和优化

weblogic部署和优化Weblogic是目前主流J2EE服务器之一,支持符合J2EE标准的各类应用程序(Application),Weblogic支持分布式异构体系,能利用多种数据库平台并支持运行于多种操作系统。
weblogic部署一、weblogic部署前准备工作二、检查weblogic是否已经安装(weblogic 10.3 JDK1.6 )。
三、如没有安装联系ICT进行安装。
四、规划好(端口号、域路径、域名、console账号密码),建域的时候需用到这三个信息。
五、建weblogic域1)运行命令并建域bea/wlserver_10.3/common/bin/config.sh选择组件设置域的用户/密码选择运行模式, 建议使用production模式:修改端口设置域的存放路径:设置域名:在域的路径下新建boot.properties文件:补充:到其他域拷贝start.sh webkill.sh尝试用start.sh webkill.sh 进行域停启cd 域路径vi boot.propertiesmkdir app六、部署weblogic域1)修改config.xml部署A、数据库连接配置jdbc—在/home/spsdev/weblogic/acc/acc/WEB-INF/classes目录下修改jdbc.properteres、datasources.xmljndi—在/home/weblogic/acc/accweb1/config/jdbc目录下增加getpass.sh ***-jdbc.xml trans3des.sh transinput.sh配置。
上面的文件都可以在其他域的连接池进行拷贝,其中***-jdbc.xml文件要修改相应的数据库连接串和用户,用户密码可以通过执行transinput.sh修改用户密码。
B、config.xml配置部署下面是有JNDI连接池的配置方式,如是jdbc去掉相关连接池的配置。
Weblogic参数调优

Weblogic参数调优一、调优背景:应银监会总会需求,需对银监会派出机构客户风险监测预警系统进行1轮剔除网络环境的性能测试(在山东试运行阶段的性能测试,由于网络瓶颈较大,造成性能指标较差)。
由于时间紧张,只是匆忙搭建了测试环境,Weblogic、DB2等的参数均是默认设置,并未进行任何调优。
默认设置在系统使用人数不多的情况性能尚可,但当使用人数较多,或者进行大并发的性能测试时,则会显得捉襟见肘。
如:在本次测试过程中,在集团关联处的50并发,就会造成系统崩溃。
如图可见:在集团关联并发50的时候,队列长度已经高达103,空闲线程数已经为0,同时吞吐量极低,由此造成系统崩溃。
通过分析,查找到原因在于:JVM分配内存过少;线程池、连接池里分配的线程数以及容量过低,通过调优后解决了问题二、调优思路:一般来讲,J2EE应用架构环境下的系统调优,首先我们一般会从应用程序出发,去审核代码,做到代码级的优化,然后再调整应用服务器(BEA WebLogic8.1)和数据库(DB2)的参数,最后当然是调整操作系统和网络的性能(包括硬件升级)。
这是一种MDA的先进做法。
诚然,在许多项目中,不可能完全按照这个思路来做,我们把目标首先定位在应用系统所在的应用服务器(BEA WebLogic8.1)上,通过对BEA WebLogic8.1的参数进行设置,使WebLogic8.1能够在最优化的环境中去运行其系统,然后对DB2数据的参数进行优化设置,最后进行性能测试再找出导致性能瓶颈所在的SQL代码或JA V A程序,考量其修改的可行性,并进行最终问题优先级认定,与瓶颈模块进行协商解决性能问题。
当然,大多数时候都出现了性能问题后才想到调优,而且一般都是先进行系统参数调整,实在解决不了才会对代码进行检查。
实际上,我们应当将代码级的调优放在应用设计时来做,测试生产时修改代码将是一件极其痛苦的事情。
而本次测试由于时间紧张,只对Weblogic进行了参数调优,现将调优步骤进行说明:1.JVM调整:(1)首先,在D:\bea\user_projects\domains\mydomain下用编译模式打开startWebLogic.cmd,查找代码:call "%WL_HOME%\common\bin\commEnv.cmd"(windows)或者call "%WL_HOME%\common\bin\commEnv.sh"(linux/aix)找到后,在相应路径用编译模式打开该文件:(2)接着要弄清楚JDK厂商(是bea,还是sun、IBM等)set JA V A_VENDOR=BEA(此处说明应用的为BEA的JDK)(3)之后查找weblgoic运行模式:set PRODUCTION_MODE=默认是开发模式(线程计数默认为15)即为空,在上线时,应将其改为产品模式(线程计数默认为25):set PRODUCTION_MODE=ture(4)然后需修改分配给JVM的内存(默认为96M):因已确定厂商为BEA,运行模式为产品模式,所以找到::beaif "%PRODUCTION_MODE%" == "true" goto bea_prod_modeset JA V A_VM=-jrockitset MEM_ARGS=-Xms1024m -Xmx1024mset JA V A_OPTIONS=%JA V A_OPTIONS% -Xverify:nonegoto continue:bea_prod_modeset JA V A_VM=-jrockitset MEM_ARGS=-Xms1024m -Xmx1024m(此处即为分配给JVM的内存范围)goto continue可根据系统需要,修改分配的内存数注:如为32位的操作系统,则最大支持分配2G内存2.线程池调整:打开Weblogic,在路径:mydomain->服务器->myserver->右键打开“查看执行队列” weblogic.kernel.Default调整如下指标:(1) 线程计数—分配给此队列的线程数,建议值为: 100(2) 线程数增加—在出现溢出时,要添加到队列中的线程数,建议值为: 50(3) 最大线程数—此队列可以拥有的最大线程数。
weblogic参数配置和调优

请求超时处理
博客园 用户登录 代码我 登录 第三方登录/注册 没有账户, 立即注册
weblogic参 数 配 置 和 调 优
weblogic的执行线程数配置 判断是否存在线程等待:在WebLogic的控制台的myserver中的Monitoring页面下的Performance页面中,Queue Length是否等于0。 通过config.xml配置文件修改线程数(修改后重启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 我这里不做更改直接用这个用户名密码按自己的需求设置既可密码设置完成后直接点击下一步:下图界面选对开发模式由于用的是最新版本12.C系列软件里已带有JDK 不用再做另外的安装直接点击下一步:(注:可以使用WebLogic安全服务提供的验证数字证书。
有这些证书,你开发的应用程序会在SSL保护的环境下运行WEBLOGIC实例会自动部署和更新位于domain_name/applications目录下的应用程序)出现下图界面后选择管理服务器因为我们这里就单台没有做群集所以只选择第一个选择完成后点击下一步既可:(注:受管理服务器,集群和计算机选项是多台Weblogic组建群集时使用。
WebLogic优化(教材)

九瑞网络技术有限公司
中软
参数修改
文件 $CATALINA_HOME/conf/server.xml <Connector port="80" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75“ enableLookups ="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000“ disableUploadTi meout="true" />
九瑞网络技术有限公司
中软
操作系统性能调整
网络性能调整 打开文件数量调整
默认windows下打开文件数是2000;在linux 下是1024; vi /etc/profile 加入ulimit -n 4096就把linux 改成打开文件最大数为4096
九瑞网络技术有限公司
中软
为WebLogic启动设置Java参数
九瑞网络技术有限公司
中软
设置与性能有关的配置参数2
ExcuteQueue
ThreadCount QueueLength QueueLengthThresholdPercent ThreadsIncrease ThreadsMaximum Thread Priority
JDBConnectionPool
九瑞网络技术有限公司
中软
优化连接缓存
九瑞网络技术有限公司
中软
跟我学中间件相关技术及应用——WebLogic应用服务器性能调优

跟我学中间件相关技术及应用——WebLogic应用服务器性能调优1.1.1对在WebLogic应用服务器中运行的代码进行调优1、在WebLogic应用服务器中的Web应用系统中的代码调优(1)HttpSession的使用应用服务器保存很多会话时,容易造成内存不足,所以尽量减少session的使用,放置session里的对象不应该是大对象,最好是简单小对象,实现串行化接口。
当会话不再需要时,应当及时调用invalidate()方法清除会话。
而当某个变量不需要时,及时调用removeAttribute()方法清除变量。
请勿将EJB对象放置在session中。
(2)JSP代码调优目前,在JSP页面中引入外部资源的方法主要有两种:include指令,以及include动作。
●include指令例如<%@ include file="copyright.html" %>,该指令在编译时引入指定的资源。
在编译之前,带有include指令的页面和指定的资源被合并成一个文件。
被引用的外部资源在编译时就确定,比运行时才确定资源更高效。
●include动作例如<jsp:include page="copyright.jsp" />。
该动作引入指定页面执行后生成的结果。
由于它在运行时完成,因此对输出结果的控制更加灵活。
但是,只有当被引用的内容频繁地改变时,或者在对主页面的请求没有出现之前,被引用的页面无法确定时,使用include动作才合算。
对于那些无需跟踪会话状态的jsp,关闭自动创建的会话可以节省一些资源。
使用如下page指令:<%@ page session="false"%> ;尽量不要将JSP页面定义为单线程,应设置为<%@page isThreadSafe=”true”%>;在JSP 页面最好使用输出缓存功能,如: <%@page buffer="32kb"%>;尽量用wl:cache定制标记来缓存静态或相对静态的内容,缓存jsp:include操作的结果能显著提高应用程序的运行性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WebLogic优化大全 摘要: 随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA WebLogic Server是业界领先的应用服务器,BEA WebLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己平时工作中的一些经验积累分享给大家,抛砖引玉。 前 言
随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA WebLogic Server是业界领先的应用服务器,BEA WebLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己平时工作中的一些经验积累分享给大家,抛砖引玉。
本文从J2EE应用架构(下图)来分别剖析系统调优,首先我们一般会从应用程序出发,去审核代码,做到代码级的优化,然后再调整应用服务器(BEA WebLogic8.1)和数据库 (Oracle9i)的参数,最后当然是调整操作系统和网络的性能(包括硬件升级)。诚然,在我遇到的很多项目中,都是出现了性能问题后才想到调优,而且一般都是先进行系统参数调整,实在解决不了才会对代码进行检查.实际上,我们应当将代码级的调优放在应用设计时来做,测试生产时修改代码将是一件极其痛苦的事情。
WebLogic平台J2EE应用架构 第一章 应用程序调优 1.1.1 通用代码调优
1.1.2 减小没有必要的操作 对象的创建是个很昂贵的工作,所以我们应当尽量减少对象的创建,在需要的时候声明它,初始化它,不要重复初始化一个对象,尽量能做到再使用,而用完后置null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式,将减少类的创建,每次都是通过clone()方法来获得对象。另外使用接口也能减少类的创建。对于成员变量的初始化也应尽量避免, 特别是在一个类派生另一个类时。
异常抛出对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为, fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。 此外, 建议关闭Debug输出,尽量少用串行化、同步操作和耗时昂贵的服务(如Date())。 1.1.3 使用合适的类型 当原始类型不能满足我们要求时,使用复杂类型。String和StringBuffer的区别自不必说了,是我们使用最多的类型,在涉及到字符运算时,强烈建议使用StringBuffer。在做String匹配时使用intern()代替equal()。
带有final修饰符的类是不可派生的, 如果指定一个类为final,则该类所有的方法都是final。
Java编译器会寻找机会内联所有的final方法,这将能够使性能平均提高50%。类的属性和方式使用final或者static修饰符也是有好处的。
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。所以尽量使用局部变量。
ArrayList和Vector,HashMap和Hashtable是我们经常用到的类,前者不支持同步,后者支持同步,前者性能更好,大多数情况下选择前者。
1.1.4 尽量使用pool,buffer和cache 使用pool、buffer和cache能大大提高系统的性能,这在J2EE的大部分技术中都是适用的。
在WebLogic中就大量使用了池:JDBC Connection Pool、Socket Pool、Object Pool和Thread Pool。I/O操作中,buffer是必须的,特别是对大文件的操作,不然容易造成内存溢出。字节操作最快,所以尽可能采用write(byte []),Buffered FileOutputStream比Buffered FileWriter要快,因为FileWriter需要Unicode到Byte的转换。
而后面讲到的JDBC、JSP、EJB和JMS我们都非常建议使用buffer和cache。为HttpServletResponse设置buffersize,使用wl-cache,缓存在JNDI树上获取的对象等等。
此外,使用JDK 1.4的非阻塞I/O对性能也有很大提高。 1.2 JDBC代码调优 1.2.1 严格资源使用 JDBC代码调优最大的原则就是使用WebLogic的连接池,而不是自己直连数据库。在我接触的很多自己实现连接池的项目中,大部分遇到死锁和连接泄漏的问题,最后得不得修改代码。而WebLogic提供了功能强大,性能良好的数据库连接池,我们要做的只是封装一个连接管理类,从JNDI树上获取数据源并缓存,得到连接,并提供一系列关闭数据库资源的方法。
对任何资源使用的原则是用完即关,不管是数据库资源、上下文环境,还是文件。数据库资源的泄漏极易造成内存泄漏,乃至系统崩溃。在使用完数据库资源后依次关闭ResultSet,Statement和Connection,而在一个数据库连接多次进行数据库操作时要特别注意ResultSet和 Statement依次关闭。 try{ //open connection pstmt =conn.prepareStatement(strSql1); pstmt.executeUpdate(); pstmt.close(); pstmt =conn.prepareStatement(strSql2); rs=pstmt.executeQuery(); while (rs.next()){ //process } rs.close(); pstmt.close(); }catch(Exception e){ //close rs,psmt,con }finally{ //close rs,psmt,con }
1.2.2 实用技巧 在JDBC操作中还有一些小的技巧跟大家分享:由于获取连接时默认自动提交方式,使用 connection.setAutoCommit(false) 关闭自动提交,使用PreparedStatement,批量更新,业务复杂或者大数据量操作时使用存储过程,尽量使用RowSet,此外设置记录集读取缓存FetchSize和设置记录集读取方向FetchDirection对性能也有一定的提高。
1.2.3 优化SQL语句 SQL语句的优化牵涉到很多数据库的知识,需要与索引配合,因此需要DBA对代码中的SQL进行检查测试。常见的,select *不提倡使用,效率极差,建议显式获取列,即使是所有字段也应罗列,而取总数时使用count(*),为提高cache的命中率,尽量做到SQL重用。对于大数据量的查询,可以充分利用Oracle数据库的特性,每次取出m-n行的数据,实现分页查询。另外,提高性能的好选择可能就是把所有的字符数据都保存为Unicode,Java以Unicode形式处理所有数据,因此,数据库驱动程序不必再执行转换过程。
1.3 Web代码调优 1.3.1 HttpSession的使用 应用服务器保存很多会话时,容易造成内存不足,所以尽量减少session的使用,放置session 里的对象不应该是大对象,最好是简单小对象,实现串行化接口。当会话不再需要时,应当及时调用invalidate()方法清除会话。而当某个变量不需要时,及时调用removeAttribute()方法清除变量。请勿将EJB对象放置在session中。
1.3.2 JSP代码调优 目前,在JSP页面中引入外部资源的方法主要有两种:include指令,以及include动作。 include指令:例如<%@ include file="copyright.html" %>,该指令在编译时引入指定的资源。在编译之前,带有include指令的页面和指定的资源被合并成一个文件。被引用的外部资源在编译时就确定,比运行时才确定资源更高效。 include动作:例如。该动作引入指定页面执行后生成的结果。由于它在运行时完成,因此对输出结果的控制更加灵活。但是,只有当被引用的内容频繁地改变时,或者在对主页面的请求没有出现之前,被引用的页面无法确定时,使用include动作才合算。
对于那些无需跟踪会话状态的jsp,关闭自动创建的会话可以节省一些资源。使用如下page指令: <%@ page session="false"%> ;尽量不要将JSP页面定义为单线程,应设置为<%@page isThreadSafe=”true”%>;在JSP页面最好使用输出缓存功能,如: <%@page
buffer="32kb"%>;尽量用wl:cache定制标记来缓存静态或相对静态的内容,缓存jsp:include操作的结果能显著提高应用程序的运行性能。
1.3.3 Servlet代码调优 Servlet代码调优比较简单:在Servlet之间跳转时,forward比sendRedirect更有效;设置 HttpServletResponse 缓冲区,如:response.setBufferSize(20000);在init()方法里缓存静态数据,而在destroy()中释放它;建议在 Servlet里使用ServletOutputStream输出图片等对象;避免在Servlet和Jsp中定界事务等。
1.4 JMS代码调优 1.4.1 注意必要的事项,避免使用不必要的特征 JMS提供了强有力的消息处理机制,但是为了最大限度的提高JMS系统的性能,应避免使用不需要使用的特征,同时也要注意必要的事项。比如:尽量使用接收程序能直接使用的最简单、最小的消息类型;消息选择器要尽可能简单(最好不使用),尽量不要使用复杂的操作符,如like、in或者between 等, 使用字符串数据类型的速度最慢;务必为特定的应用程序定义特定的JMS连接工厂,并且禁用默认的JMS连接工厂;不要在javax.*与 weblogic.*的名字空间中使用JNDI名称;尽量使用异步消费者,线程不必封锁以等待消息的到达;使用完JNDI树上的资源后注意关闭。