免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Weblogic服务器性能调优注:在下面做的介绍都是以Weblogic8.1为例的,其它版本的Weblogic可能会有些许不同。 1) 设置JAVA参数; a) 编辑Weblogic Server启动脚本文件;l BEA_HOMEuser_projectsdomainsdomain-namestartWebLogic.cmd(startWebLogic.sh on Unix)l BEA_HOMEuser_projectsdomainsdomain-namestartManagedWebLogic.cmd(startManagedWebLogic.sh on Unix)b) 编辑set JAVA_OPTIONS命令,如:set JAVA_OPTIONS=-Xms256m Xmx256m;c) 保存,重启即可。注:在WebLogic中,为了获得更好的性能,BEA公司推荐最小Java堆等于最大Java堆。2) 开发模式 vs. 产品模式;开发模式和产品模式的一些参数的默认值不同,可能会对性能造成影响,下面是对性能有影响的参数列表: 参数 开发模式默认值 产品模式默认值 Execute Queue: Thread Count 15 threads 25 threads JDBC Connection Pool: MaxCapacity 15 connnections 25 connections 通过启动管理控制台,在域(如:mydomain) 配置 常规选择产品模式。3) 尽量开启本地I/O;通过启动管理控制台,在域(如:mydomain) 服务器 server实例(如:myserver) 配置 调整选择启用本地I/O。注:此值也可通过手动的修改config.xml配置文件。4) 调优执行队列线程;a) 修改默认执行线程数在这里,执行队列的线程数表示执行队列能够同时执行的操作的数量。但此值不是设的越大越好,应该恰到好处的去设置它,太小了,执行队列中将会积累很多待处理的任务,太大了,则会消耗大量的系统资源从而影响整体的性能。在产品模式下默认为25个执行线程。为了设置理想的执行队列的线程数,我们可以启动管理控制台,在域(如:mydomain) 服务器 server实例(如:myserver) 监视 性能中监控最大负载时执行队列的吞吐量和队列中的等待请求数,据此确定理想的数值。 理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总体体系架构、I/O、操作系统的进程调度机制、JVM的线程调度机制。随着CPU个数的增加,WebLogic可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也就越多;线程数越小,CPU可能无法得到充分的利用。为获取一个理想的线程数,需要经过反复的测试。在测试中,可以以25*CPU个数为基准进行调整。当空闲线程较少,CPU利用率较低时,可以适当增加线程数的大小(每五个递增)。对于PC Server和Windows 2000,则最好每个CPU小于50个线程,以CPU利用率为90%左右为最佳。 通过启动管理控制台,在域(如:mydomain) 服务器 server实例(如:myserver) Execute Queue weblogic.kernel.Defalt 配置中修改线程计数。 b) 设定执行队列的溢出条件; Weblogic Server提供给默认的执行队列或用户自定义的执行队列自定义溢出条件的功能,当满足此溢出条件时,服务器改变其状态为“警告”状态,并且额外的再分配一些线程去处理在队列中的请求,而达到降低队列长度的目的。 通过启动管理控制台,在域(如:mydomain) 服务器 server实例(如:myserver) Execute Queue weblogic.kernel.Defalt 配置下面几项:l 队列长度:此值表示执行队列中可容纳的最大请求数,默认值是65536,最后不要手动改变此值。l 队列长度阈值百分比:此值表示溢出条件,在此服务器指出队列溢出之前可以达到的队列长度大小的百分比。l 线程数增加:当检测到溢出条件时,将增加到执行队列中的线程数量。如果CPU和内存不是足够的高,尽量不要改变默认值“0”。因为Weblogic一旦增加后不会自动缩减,虽然最终可能确实起到了降低请求的作用,但在将来的运行中将影响程序的性能。l 最大线程数:为了防止创建过多的线程数量,可以通过设定最大的线程数进行控制。在实际的应用场景中,应根据具体情况适当的调整以上参数。c) 设定执行队列监测行为Weblogic Server能够自动监测到当一个执行线程变为“阻塞”。变为“阻塞”状态的执行线程将无法完成当前的工作,也无法再执行新请求。如果执行队列中的所有执行线程都变为“阻塞”状态,Weblogic server可能改变状态为“警告”或“严重”状态。如果Weblogic server变为“严重”状态,可以通过Node Manager来自动关闭此服务器并重新启动它。具体请参考:Node Manager Capabilities文档。通过启动管理控制台,在域(如:mydomain) 服务器 server实例(如:myserver)配置 调整下可配置下面几项:l 阻塞线程最长时间:在此服务器将线程诊断为阻塞线程之前,线程必须连续工作的时间长度(秒)。默认情况下,WebLogic Server 认为线程在连续工作 600 秒后成为阻塞线程。l 阻塞线程计时器间隔:WebLogic Server 定期扫描线程以查看它们是否已经连续工作了 阻塞线程最长时间 字段中指定的时间长度的间隔时间(秒)。默认情况下,WebLogic Server 将此时间间隔设置为 600 秒。5) 调优TCP连接缓存数;WebLogic Server用Accept Backlog参数规定服务器向操作系统请求的队列大小,默认值为50。当系统重载负荷时,这个值可能过小,日志中报Connection Refused,导致有效连接请求遭到拒绝,此时可以提高Accept Backlog 25%直到连接拒绝错误消失。对于Portal类型的应用,默认值往往是不够的。Login Timeout和SSL Login Timeout参数表示普通连接和SSL连接的超时时间,如果客户连接被服务器中断或者SSL容量大,可以尝试增加该值。通过启动管理控制台,在域(如:mydomain) 服务器 server实例(如:myserver)配置 调整下可配置“接受预备连接”。6) 改变Java编译器;标准的Java编译器是javac,但编译JSP servlets速度太慢,为了提高编译速度,可以使用sj或jikes编译器取代javac编译器。下面说说更改Java编译器:通过启动管理控制台,在域(如:mydomain) 服务器 server实例(如:myserver)配置 常规下改变Java 编译器,默认为javac。输入完整路径,如:c:visualcafe31binsj.exe。然后打开高级选项,在预规划到类路径填写编译 Java 代码时为 Java 编译器类路径预规划的选项,如:BEA_HOMEjdk141_02jrelibrt.jar。7) 使用Webogic Server集群提高性能;具体关于如何配置Weblogic集群,我就不细说了。详情可参考:Introduction to WebLogic Server Clustering。8) Weblogic EJB调优由于EJB2.0已经很少项目在用了,EJB3.0再成熟一点,我再补充这一部分吧!9) JDBC应用调优JDBC Connection Pool的调优受制于WebLogic Server线程数的设置和数据库进程数,游标的大小。通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销,将最小值和最大值设为一致。增加Statement Cache Size对于大量使用PreparedStatement对象的应用程序很有帮助,WebLogic能够为每一个连接缓存这些对象,此值默认为10。在保证数据库游标大小足够的前提下,可以根据需要提高Statement Cache Size。比如当你设置连接数为25,Cache Size为10时,数据库可能需要打开25*10=250个游标。不幸的是,当遇到与PreparedStatement Cache有关的应用程序错误时,你需要将Cache Size设置为0。尽管JDBC Connection Pool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。这里建议最好不要设置测试表, 同时Test Reserved Connections和Test Released Connections也无需勾上。 当然如果你的数据库不稳定,时断时续,你就可能需要上述的参数打开。最后提一下驱动程序类型的选择,以Oracle为例,Oracle提供thin驱动和oci驱动,从性能上来讲,oci驱动强于thin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不大,随着thin驱动的不断改进,这一弱势将得到弥补。而thin驱动的移植性明显强于oci驱动。所以在通常情况下建议使用thin驱动。而最新驱动器由于WebLogic server/bin目录下的类包可能不是最新的,请以Oracle网站为准: /technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html。10) JSP调优l 设置jsp-param pageCheckSeconds=-1;l 设置serlet-reload-check=-1或ServletReloadCheckSecs=-1;l 设置jsp-param precompile=true,关闭JSP预编译选项。 WebLogic Server Hang产生的原因一般为:系统内存不足系统cpu忙系统文件描述符数目不足线程死锁JVM有GC方面的bug对于一些特定的情况可以使用truss命令跟踪系统调用来进行分析系统内存不足出现OutOfMemoryError或是观察到内存吃紧操作系统本身的剩余内存通过top或是vmstat观察操作系统的swap区Swap区太小可能导致编译jsp时报“Not enough space”的错操作系统kernel参数中maxdsiz的大小如果观测到数据库连接池里的连接泄漏,极可能是内存泄漏的先兆系统内存不足JVM的heap区大小通过java命令行中的-Xms,-Xmx指定,建议最小值和最大值设成一样可以通过weblogic console上server/monitor/performance来观察其使用情况建议生产系统最少256M,一般情况下可以设置为系统剩余物理内存的80Heap size太大在一些jvm上会有问题对于sun和hp的jvm,permanent size太小也会出OutOfMemoryError在java命令行上加-XX:MaxPermSize=128m系统内存不足尽量减少内存消耗Session中不要放大的数据,并尽量在不再需要的时候remove掉;如果可以调整session timeout到较小的值避免在J2EE server端应用里边调用awt/swing作图调整ejb的cache/pool设置系统内存不足内存泄漏可以通过weblogic console来观察jvm的heap memory使用情况来获知是否有内存泄漏情况采用第三方辅助工具来获取更详细信息Jprobe/OptimizeIt有可能是weblogic的bug,但绝大部分情况是由用户的应用引起的最常见的代码问题是数据库连接没正常关闭比较好的写法是:Connection conn = null;Statement stmt = null;ResultSet rset= null;tryconn = getConnection()catch(SQLException sqle)finallytryrset.close();catch(Exception e)trystmt.close();catch(Exception e)tryconn.close();catch(Exception e)系统cpu忙如果用户访问量很大,cpu占用很高(user态)并不是异常如果是kernel态很多,需要OS厂商调整操作系统采用top找到占用cpu很多的进程如果是非weblogic进程,应该考虑将其移到另外的server上运行如果是运行weblogic的java进程,通过做thread dump(详细信息后边会介绍到)来确认是那段代码导致了这么高的cpu使用(也有可能是os/jvm本身不正常)系统文件描述符数目不足Log中有“too many open files”的错误表示达到了系统对一个进程能同时打开的文件数的限制ulimit ?Ca ?CH 可以查看当前限制ulimit ?Cn number可以来更改当前环境的设置,建议至少设到4096Solaris上可以通过/usr/proc/bin/pfiles pid来查看指定进程的限制和当前使用的file descriptor数目Solaris上root用户可以通过/usr/proc/bin/plimit -n soft,hard pid 来动态更改进程的文件描述符的限制 线程死锁对于原因不明的hang或是响应慢,最根本的方法就是获取thread dump信息对于windows系统,在运行java的窗口按CtrlBreak对于unix系统,首先用ps找到运行weblogic的java进程的pid,然后执行kill ?C3 pidJVM将负责将所有java进程的状态、执行堆栈dump到其标准输出为了方便获取thread dump信息,在weblogic启动的时候,最好将其标准输出重定向到一个文件为了反映线程状态的动态变化,需要接连多次做thread dump,每次间隔10-20s线程死锁对于thread dump信息,主要关注的是线程的状态和其执行堆栈线程的状态一般为三类Runnable(R):当前可以运行的线程Waiting on monitor(CW):线程主动waitWaiting for monitor entry(MW):线程等锁一般关注的都是第一和第三种状态的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢病项目内部培训制度
- 运营部培训制度
- 李宁培训制度
- 社区培训制度
- 煤矿机电班组培训制度
- 培训会报备制度
- 培训驿站管理制度
- 血栓培训制度
- 神经外科科室培训制度
- 专业岗位培训制度
- 防意外伤害安全班会课件
- 2025年国家基本公共卫生服务考试试题(附答案)
- 2025年医院社区卫生服务中心工作总结及2026年工作计划
- 2025-2026学年北师大版七年级生物上册知识点清单
- 委托作品协议书
- 食品加工厂乳制品设备安装方案
- 2025至2030中国芳纶纤维行业发展分析及市场发展趋势分析与未来投资战略咨询研究报告
- 尾牙宴活动策划方案(3篇)
- 鲁教版(2024)五四制英语七年级上册全册综合复习默写 (含答案)
- 生蚝课件教学课件
- 组塔架线安全培训
评论
0/150
提交评论