weblogic调优笔记
weblogic常见错误

这个错误信息意思是:名称为1234的服务器没有找到,在配置中只存在以下服务:myserver。
选择“Window -> Preferences”菜单,打开首选项对话框。展开 MyEclipse 下的 Application Servers 节点,点击 WebLogic 9,将Execution server name的属性改为:myserver。注意:如果在配置域的时候没有配置服务器名称,那么服务器名称默认为:AdminServer。
输入用户名和密码,是我们在第4步配置的用户名:weblogic,密码:weblogic。
三、在MyEclipse中配置Weblogic的开发环境。
1、Window(窗口)---> Preferences(首选项)---> MyEclipse ---> Application Servers(应用服务器)---> WebLogic ---> WebLogic 9.X ---> 选中Enable单选按钮,启用WebLogic服务器。
9、测试一下是否配置成功。开始菜单 ---> 程序 ---> BEA Products(BEA产品)---> User Projects ---> mydomain(是我们在第7步取的域名) ---> Start Admin Server for Weblogic Server Domain(启动WebLogic服务器)。当看到输出:Server started in RUNNING mode(服务器正在运行)的信息后,表示配置正确,服务器已经启动成功。停止服务,可以这样:开始菜单 ---> 程序 ---> BEA Products(BEA产品)---> User Projects ---> mydomain(是我们在第7步取的域名) ---> Stop Admin Server。
weblogic java_option 参数

weblogic java_option 参数WebLogic Server提供了一系列的Java选项参数,以控制Java 虚拟机的行为。
以下是一些常用的Java选项参数:1. -Xms: 初始Java堆大小2. -Xmx: 最大Java堆大小3. -XX:PermSize: 初始永久代大小4. -XX:MaxPermSize: 最大永久代大小5. -XX:NewSize: 初始新生代大小6. -XX:MaxNewSize: 最大新生代大小7. -XX:SurvivorRatio: 新生代中Eden区和Survivor区的比例8. -XX:NewRatio: 新生代和老年代的大小比例9. -XX:ParallelGCThreads: 并行垃圾回收线程数10. -XX:+UseParallelGC: 使用并行垃圾回收11. -XX:MaxGCPauseMillis: 最大垃圾回收暂停时间12. -XX:+HeapDumpOnOutOfMemoryError: 在发生OutOfMemoryError时输出堆转储文件13. -Dweblogic.security.SSL.ignoreHostnameVerification=true: 忽略SSL主机名验证14. -Dweblogic.security.SSL.protocolVersion=TLSv1.2: 使用TLSv1.2协议进行SSL/TLS通信15. -Dweblogic.MaxMessageSize: 设置WebLogic通信最大消息大小请注意,这只是一些常用的Java选项参数,您可以根据应用程序的需要进行调整。
对于一些高级调优参数,建议咨询WebLogic Server的官方文档。
性能优化课堂笔记和培训心得

软件性能优化心得体会随着企业级开发平台诸如J2EE的普及和发展,越来越多的企业应用采用了这些技术作为快速开发平台,但是,这些应用也面临着一些困扰,特别是性能问题。
这主要是由这些系统的分布性、复杂性和数据无关性引起的。
高性能是软件高质量的重要体现,也是用户满意度提高的重要软件特征,为了提高软件的性能,在这次培训中,老师从以下几个层次讨论软件性能优化。
一、Java底层代码的性能优化1、首先根据Jvm虚拟机的内存机制来优化系统堆(Heap)是一个复杂的结构,对象及其成员通常保存在堆中。
运行时在数据区, 动态创建,堆中的内容由GC 负责回收。
栈(Stack)是一个简单的结构,方法的参数(基本型别的值、指向对象的引用)通常保存在栈中。
栈中的内容在方法执行完时就被回收了。
栈的存取速度比堆要快,栈数据可以共享,存在栈中的数据大小与生存期必须是确定的,栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
使用局部变量的好处在于作用范围是变量定义的方法内部,一旦离开作用域,栈内存将被快速释放,与GC无关,而其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢,但是可以自动回收。
所以要尽量使用局部变量。
在这里,培训的老师举了个人例子Afor(int i=0;i<10000; i++){Object o = new Object();}BObject o = null;for(int i=0;i<10000; i++){o = new Object();}A和B之间究竟哪个性能更加好呢?在这里A和B的唯一区别在于,B在循环体外定义Object,而A是在循环体内定义Object,显然A的Object作用域是在局部,一旦执行下一轮循环,立即释放原先定义的Object,而B 的Object作用域是在全局,必须等到循环全部结束,Object才能被释放,因此A的性能要好于B,而且两者运行速度不是一个数量级。
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) 最大线程数—此队列可以拥有的最大线程数。
OracleWeblogic11g基础知识

主要特点
支持多种编程语 言和框架
WebLogic Server 11g 支持 Java EE 和 SOA 标准,以及多种流行的 编程语言和框架,如 Java、JSP、Servlets、 EJB、JMS、JAX-WS 等。
集成开发环境 (IDE)
高可用性和可伸 缩性
WebLogic Server 11g 提供了一个集成的开发 环境(IDE),支持从设 计到部署的全过程开发, 包括代码编辑、调试、 测试和部署等。
WebLogic Server 11g 支持高可用性和可伸缩 性,通过集群和负载均 衡技术,提供对关键业 务应用的保护,确保应 用程序的可靠性和性能 。
指导用户如何配置审计和日志功能,以便于监控和安全分析。
安全策略配置
指导用户如何配置安全策略,包括 IP 限制、URL 过滤等。
安全漏洞与防护
1 2
常见安全漏洞
介绍 WebLogic Server 11g 中常见的安全漏洞, 如跨站脚本攻击(XSS)、SQL 注入等。
安全补丁
及时发布安全补丁,修复已知的安全漏洞,提高 系统的安全性。
ABCD
VisualVM:用于监控 Java应用程序的内存、线 程和CPU使用情况。
AWR报告:Oracle自动 工作负载仓库报告,提供 数据库性能的详细分析和 诊断。
性能优化案例
案例一
某银行核心业务系统在高峰期出现性 能瓶颈,通过调整JVM参数和 WebLogic参数,成功提高了系统响 应速度和吞吐量。
3
安全加固
通过配置安全策略、限制访问权限等措施,加固 系统的安全性,防止潜在的安全威胁。
weblogic线程池设置

图形化操作是在工作管理器中新建两个约束min和max如何修改WebLogic 9.x / 10.x 默认线程池大小2010/10/10 12:39 AM | 教主| 技术文章| 2 条评论了已经作者:老王来源:WebLogic中文爱好者官方文档指出,WebLogic 9 / WebLogic 10 的线程池是自调优的,并且在WebLogic 9的时候,通过修改config.xml可以修改默认线程池的最小值、最大值,但是很麻烦。
到了WebLogic 10gR3,连修改config.xml的办法都给取消了。
但是,可以通过在启动脚本增加如下参数,可以指定默认线程池的最小值、最大值:-Dweblogic.threadpool.MinPoolSize=100-Dweblogic.threadpool.MaxPoolSize=500如何修改weblogic默认线程池大小2010年12月27日wei发表评论阅读评论weblogic 9开始使用了线程自调优技术。
通过以下方法设置,可以指定默认线程的最大最小值。
方法一:修改启动脚本参数在启动脚本中,增加如下参数%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS%=%SERVER_NAME%-Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=500%PROXY_SETTINGS% %SERVER_CLASS%方法二:修改config.xml在config.xml中,增加如下参数<server><name>AdminServer</name><self-tuning-thread-pool-size-min>100</self-tuning-thread-pool-size-min> <self-tuning-thread-pool-size-max>500</self-tuning-thread-pool-size-max> <listen-port>7923</listen-port><listen-address></listen-address></server>经过测试,以上两种方法适合weblogic9,10,11g。
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_正常处理任务线程" ng.OutOfMemoryError: Java heap spaceatoracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.ja va:868)atoracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatem ent.java:1045)atoracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPre paredStatement.java:839)atoracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatem ent.java:1132)atoracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrepa redStatement.java:3316)atoracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)经过对报错日志分析,状态检修的CBM处理进程内存溢出报错,导致服务器宕机。
Weblogic应用层优化调试设置

社区Weblogic应用层优化调试设置
以Weblogic为中间件的社区应用层,有以下性能优化设置供参考。
1、设置为生产模式,增大连接数据
进入weblogic console 点击左边对应的域名,勾选右边的生产模式。
2、Weblogic登录超时时间
进入weblogic console界面,点击左边对应的域名,再点击监视,再点击服务器/子系统名称AdminServer ,再点击调整,可以看到如下图。
3、设置weblogic 占用的内存值
进入weblogic安装域名目录所在的bin文件夹,修改setDomainEnv.sh 文件根据物理机的实际情况设置内存值
4、设置应用服务数据库连接数据
打开应用程序xp-app 的jdbc数据连接文件
根据oracle实际连接数修改jdbc连接数
Oracle连接数据查看show parameter processes;
5、不限制事务数量
修改服务的事务处理数量限制,修改xp-app应用服务的jta.properties
超出默认的50会报错误
Caused by: ng.IllegalStateException: Max number of active transactions reached:50
6、优化程序代码
在weblogic安装域目录下的log日志可以看到严重超时方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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带有两个版本的套接字复用器,纯java版和本地接口版(jni),一般来说在访问量小的情况下,java版比jni版性能要好一些,因为jni的API调用会损失一部分性能,但是访问量大的情况,一般都是jni 版的性能比较好,所以尽量保证weblogic实用本地接口版的套接字复用器。
相关的配置参数有两个,在server菜单—〉configuration页---〉tuning子页中的第一个和第二个配置项。
Enable Native IO :启用本地IO,勾选这个配置以后,weblogic就会启用本地接口版的套接字复用器Socket Readers :如果不选上一个选项,则这个选项可用,也就是说java版的套接字复用器会被启用,并且,java版的复用器会从执行线程中抽出这个比例的线程用于处理socket的请求。
(和java客户端访问有关?)web应用程序的相关配置1、单线程模式servlet默认情况下,一个servlet实例将会产生多个线程来同时响应多个请求。
如果某个servlet实现SingleThreadMod旗标接口,那么这个servlet将会自动拒绝多路并行请求的模式。
在这种情况下,weblogic会产生一个servlet实例池来满足单线程的要求。
目前,应该尽量避免使用单线程模式的servlet,如果需要在大容量的系统中使用单线程模式的servlet,那么应该调整如下的参数:Single Threaded Servlet Pool Size 这个参数可在weblogic.xml或者在weblogic控制台上webapplication 菜单---〉configuration页---〉Descriptor 子页中进行设置。
默认为5。
2、Weblogic生产模式下会自动监测servlet和jsp的更改情况,在产品模式下,不需要这些检查,可以通过下面的参数更改:JSPPage Check Secs和Servlet Reload Check Secs均设为-1这两项是weblogic检查jsp和servlet的时间间隔。
设置为-1,weblogic将不再检查。
关闭JSPKeep Generated和JSPVerbose,产品模式下也不需要这两个选项。
Enable JSP Line Numbers 这个选项是启用jsp行号的选项,启用行号的目的是用来支持调试,有些IDE 可以在jsp生成的java源代码中设置断点用于调试。
生产模式中也不需要。
注意:在产品发布模式下,请禁止对servlet和jsp的变更检查,这样除了能提高效率以外,还可以防止用上传文件的方式对服务器的攻击。
如果需要更改servlet和jsp,可以重新部署应用。
3、Session和cookie的相关配置概念会话cookie:如果不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。
这种生命期为浏览器会话期的 cookie被称为会话cookie。
Session Cookie Max Age Secs 就是会话cookie的超时时间,设置小于0表示不限制。
Session Invalidation Interval Secs 检查过期session的周期Session Timeout Secs session的超时时间4、Jdbc连接池的配置URL 连接池地址Driver Classname :jdbc驱动类名Properties :属性,例如user=examplesPassword :密码Initial Capacity :初始连接数Maximum Capacity :最大连接数Capacity Increment :连接池每次增加连接的数量Statement Cache Type :prepared statements缓存的策略,LRU算法在有新的语句到来时,将最不经常被用得语句调整出缓存。
FIXED算法为先进先出的算法Statement Cache Size :缓存中语句的最大数量,调整这个数值的大小,有利于提高系统的效率。
java虚拟机配置JRockit是BEA公司开发的Intel平台之上的高性能以及高可管理性的jvm产品,在Intel平台上使用JRockit 无疑会大大的提高效率。
使用向导建立server的配置的时候,可以选择JRockit作为该server的虚拟机,另外,也可以在域的startWebLogic.cmd或者startWebLogic.sh脚本中配置使用JRockit。
使用JRockit:set JAVA_VENDOR=BEAset JAVA_HOME=c:\bea\jrockit81sp4_142_05使用Sun的jvm:set JAVA_VENDOR=Sunset JAVA_HOME=c:\bea\jdk142_05u 与java虚拟机相关的参数配置可在startWebLogic.cmd或者startWebLogic.sh脚本中设置,在其执行java命令之前一行加入如下指令:set JAVA_VM=%JAVA_VM% “这里加入虚拟机参数”JRockit上的一些参数解释如下:选项描述-X显示扩展Java选项-Xallotype-Xallocationtype可取值global和local,定义使用本地线程还是全局线程。
global,在最大堆尺寸比较小时(小于128M)或者应用程序大量使用了线程时使用。
local,在最大堆尺寸比较大时(大于128M)或者应用程序少量使用了线程时使用。
每个本地线程区都要消耗大约2K的内存,如果大量地使用了线程,本地线程不但会造成内存空间浪费,而且还会造成堆碎片。
使用全局线程机制会减少堆碎片,但在内存分配方面速度要慢一些。
-Xbootclasspath指定类搜索路径,可以是ZIP和JAR文件,以;或:分隔-Xcleartype定义内存清理时机,可取值gc, local, alloc。
gc表示在垃圾回收时清理内存;local表示时分配一块local 线程区时清理;alloc表示内存区要被分配给其它对象时清理-Xgc选择要使用的垃圾回收器的类型,可取值:gencopy:分代复制收集(默认)适合调试期间使用singlecon:单空间并发,无中断并发gencon:世代并发,暂停时间最短parallel:parallel并行回收器,会导致应用程序间歇暂停,但会带来最大吞吐量。
如果-Xmx小于128M,缺省使用gencopy,否则使用gencon-Xgcpause打印由垃圾回收器造成的停顿时间-Xgcreport打印垃圾回收报表-Xjvmpi是否允许JVMPI事件,这些事件有:entryexit(缺省ON)allocs(缺省ON)monitors(缺省ON)arenasdelete(缺省OFF)例如:-Xjvmpi:allocs=off,monitors=off,entryexit=off-Xmanagement激活JVM中的管理服务器,在JVM的管理控制台能连接到它之前,必须先激活。
-Xms设置初始堆大小,单位有K、M、G-Xmx设置最大堆大小,单位有K、M、G建议:应设置-Xms=-Xmx以免去分配堆的时间-Xnativethreads使用本地线程系统,这是缺省选项-Xnoclassgc禁止对类作垃圾回收-Xnohup告诉JRockit,忽略CTRL_LOGOFF_EVENT和SIGHUP事件-Xns设置nursery尺寸,单位有K、M、GNursery是垃圾回收器用来存放临时对象的地方,应该在保证垃圾回收暂停时间最短的情况下,尽量大的调整nursery的值。
对于-Xgc:gencopy,缺省的Nursery大小为320KB/CPU,对于10个CPU的系统来说,Nursery大小为3200KB(3.2M)对于-Xgc:gencon,缺省的Nursery大小为10M/CPU,对于10个CPU的系统来说,Nursery 大小为100M-Xss设置线程栈尺寸,单位有K、M、G-Xthinthreads使用JRockit的高性能线程系统,在IA64上不可用。