昨天给客户做巡检,又将整个WebLogic Server的优化过程走了一遍,记录下来给大家参考。

1.JVM优化

查看

$ps –ef | grep java

/opt/java1.5/bin/java -server -Xms256m -Xmx512m -XX:PermSize=16M

-XX:NewSize=128m -XX:MaxPermSize=256m …

参数设置原则

  • 保持简单性
  • 提供基本参数(-X 参数)-Xms、-Xmx、-Xmn
  • 选择一个 GC/性能优先级,权衡吞吐量与暂停时间
  • 其余参数大多使用默认值,(让人体工程机制计算正确值,仅当默认值无效时调优)
 
  • 年轻代的大小将决定

    • 次要 GC 的频率
    • 次要 GC 收回的对象数量
  • 年老代大小
    • 应达到应用程序稳定状态的 实时数据大小
    • 尝试最大限度减小主要 GC 的频率
  • JVM 内存占用不应超过物理内存
    • 最大达到 RAM 的 80-90%(为操作系统留出空间)
  • 经验法则:应尽量增加年轻代收回的对象。尽量增加完整 GC 频繁
 
 
  • Set –Xmx = –Xms

    • 防止堆大小 (Full GC) 从 Xms 增大到 Xmx
    • 性能更优
    • 并非总是生产可用性的最佳选择(OOME 更合适使用内存交换)
  • 持久代大小
    • -XX:PermSize = -XX:MaxPermSize
    • 持久代占用空间大小难以预测
    • 设置足够高以防止 PermGen OOME
  • 将 -XX:NewSize 设置为 -XX:MaxNewSize
    • 优先使用 –Xmn
 

设置

一般来说在64位系统中开到4G-8G,如果有多租户的规划,可以开到更大,修改setDomainEnv.sh

也可以根据受管Server的名字设置不同的JVM,具体设置在USER_MEM_ARGS参数前

############# change jvm #########################

if [ "${SERVER_NAME}" = "" ] ; then

SERVER_NAME="AdminServer"

export SERVER_NAME

fi

if [ "${SERVER_NAME}" = "AdminServer" ] ; then

USER_MEM_ARGS="-Xms512m -Xmx1024m -XX:MaxPermSize=512m"

else

USER_MEM_ARGS="-Xms4g -Xmx4g -XX:MaxPermSize=1024m"

fi

############# e n d #########################

JVM GC文件输出设置

如果需要分析JVM GC日志,需要在启动时加入参数

Sun:-verbose:gc -XX:+PrintGCDetails -Xloggc:<filename>

IBM:-Xverbosegc:file=filename 或 -Xverbosegclog:filename

HP :-Xverbosegc=filename

Oracle JRockit:-Xverbose:memory -XverboseLog:filename

随后可以通过GCViewer进行脱机的日志查看。

2.关于线程

WebLogic Server在9以后引入了work manager机制,因此weblogic会自动对线程的数目进行优化,开发模式下初始线程数为15,生产模式下初始线程数为25

目前WebLogic Server采用自优化的策略来进行线程的自动扩展,一般状况下不需要对线程进行专门的优化,如果在压力测试环境中有必要,可以设置最小线程数和最多线程数,具体设置方法如下:
修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.sh中在JAVA_OPTIONS中添加如下:

JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000"

export JAVA_OPTIONS

一般线程数建议设置成100-500之间,线程太多容易引起进程内部的线程切换.

3.Accept BackLog

WebLogic 使用Accept Backlog (TCP queue)参数规定WebLogic向系统请求的queue的大小, Accept Backlog属性決定了在 waiting queue(listening queue)中最多可以有多少TCP连接等待处理,預设值爲300
如果在許多client连接被拒絕,而在服务器端沒有错误显示,说明该值设得过低
如果连接时收到了”connection refused”消息,可以适当增大weblogic.system.acceptBacklog的值,每次增加25% ,配置如下:

服务器->配置->优化->接受积压:

4.Muxer优化

Muxer定位:在前端接入请求,然后转交执行队列

WebLogic Server采用3种Muxer机制
  • Java Muxer
  • Native Muxer
  • Non-Blocking IO Muxer
始终验证 WebLogic 正在使用 NativeIO。以下消息指示其正在使用中
<Aug 7, 2012 8:32:10 AM CDT> <Info> <Socket> <BEA-000446> <Native IO Enabled.>
从 32 位 JVM 切换至 64 位 JVM 时需格外注意。32 位 WebLogic Server 下载文件不含套接字合成器所需的 64 位本地库。

如果无法使用NativeIO(或者不沟取),Java Muxer设置缺省33%,最高50%,这都是指的占用线程的比例关系,
也可以设置合成器线程数量限制:  -Dweblogic.SocketReaders=4
 
传统方式下只有一个Muxer,Non-Blocking IO Muxer是在Exalogic上采用,缺省会启动3个Muxer.
 

 5.JDBC优化

创建 DB 连接是一个非常耗时的过程
  • 理想情况下,设置为最小值 = 最大值,以避免按需创建连接
  • 如果 DB 连接数受限,请将最小值设置为处理普通负载所需的连接数,将最大值设置为处理峰值负载所需的连接数,并启用池收缩
在控制台中监视数据源统计数据
  • Active Connections High Count
  • Waiting on Connection High Count
  • Wait Seconds High Count

缓存主要设置语句的条数,缺省为10,建议调大,设置成300

Connection Creation Retry Seconds(默认值 = 0)
  • 如果某数据源的数据库不可用,那么此选项设置为默认值 0 时 WLS 将无法启动!
  • 设置为非零值可让服务器顺利启动并定期重试创建连接池
Seconds to Trust Idle Pool Connection(默认值 = 10 秒)
  • 与 Test Connections On Reserve 共同发挥作用
  • 可显著减少连接测试查询
请考虑 LLR for JTA 事务
  • 仅有利于涉及多种资源的 XA 事务
  • Last Logging Resource(非 XA)必须是数据库
 

WebLogic Server 关键优化指标的更多相关文章

  1. SQL SERVER性能优化综述

    SQL SERVER性能优化综述 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软 ...

  2. SQL SERVER全面优化-------写出好语句是习惯

    前几篇文章已经从整体提供了诊断数据库的各个方面问题的基本思路...也许对你很有用,也许你觉得离自己太远.那么今天我们从语句的一些优化写法及一些简单优化方法做一个介绍.这对于很多开发人员来说还是很有用的 ...

  3. SQL SERVER全面优化

    今天我们从语句的一些优化写法及一些简单优化方法做一个介绍.这对于很多开发人员来说还是很有用的!为了方便阅读给出前文链接: SQL SERVER全面优化-------Expert for SQL Ser ...

  4. 关于Weblogic Server(介绍)

    Weblogic, 美国Oracle公司名下产品,是一个基于 J2EE 架构.可扩展的应用服务器. 本文档选取部分官方文档翻译 总览 支持多种类型的分布式应用 基于 SOA 应用的理想架构 完整实现 ...

  5. J2EE之WebLogic Server

    WebLogic是用于开发.集成.部署和管理大型分布式Web应用. 网络应用和数据库应 用的Java应用server. 将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用 ...

  6. SQL Server 性能优化(一)——简介

    原文:SQL Server 性能优化(一)--简介 一.性能优化的理由: 听起来有点多余,但是还是详细说一下: 1.节省成本:这里的成本不一定是钱,但是基本上可以变相认为是节省钱.性能上去了,本来要投 ...

  7. --BEA官方网站(http: //www.bea.com)甲骨文已完成对该公司的收购BEA Weblogic Server 7.0x应用服务器简明安 装、配置手册 1

    ====================简 介: BEA公司是业内著名的中间件产商,以Tuxedo及Weblogic闻名于世,而其基础件平台(infrastructure)Weblogic platf ...

  8. WebLogic Server

    前几天,看了几集J2ee , 给我的感觉就是,看不懂!! 一点也不懂! 那怎么办呢? 听老师的,不管懂不懂,先看看再说.接下来,就开始了J2ee "艰苦"的历程.在J2ee中,经常 ...

  9. SQL SERVER全面优化-------Expert for SQL Server 诊断系列

    现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...

随机推荐

  1. js获取上个月日期

    javascript根据当前日期获取上个月日期 function lastMonthDate(){ var Nowdate = new Date(); var vYear = Nowdate.getF ...

  2. Java坦克大战 (二) 之画一个能动的圆圈代表坦克

    本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...

  3. linux下C的GBD调试学习笔记(转载)

    1. 单步执行和跟踪函数调用 看下面的程序: 例 10.1. 函数调试实例 #include <stdio.h> int add_range(int low, int high) { in ...

  4. mybatis插入值的时候返回对象的主键值

    mapping文件: <insert id="insert" parameterType="com.vimtech.bms.business.riskproject ...

  5. celery-分布式任务队列-原理

    # 转自:https://www.cnblogs.com/forward-wang/p/5970806.html 在学习Celery之前,我先简单的去了解了一下什么是生产者消费者模式. 生产者消费者模 ...

  6. [译]Java8:循环与函数式编程

    Java8函数式编程的加入彻底改变了游戏规则.对Java开发者来说这是一个全新的世界,我们也需要做出相应的改变. 在这篇文章中我们将找寻传统循环代码的可替代方案.Java8的函数式编程特性改变了编程思 ...

  7. ros中删除某个包之后用apt安装的包找不到

    原因是工作空间devel里还存有原来的二进制可执行文件,将build和devel内容全删除后再catkin_make就好了

  8. Android:Activity统一堆栈管理(实现随时finish特定或是所有Activty)

    直接上代码: Activity管理类:AppManager /** * 应用程序Activity管理类:用于Activity管理和应用程序退出 * * @author BiHaidong * @ver ...

  9. jquery禁用select和取消禁用

    $("#id").attr("disabled","disabled"); $("#id").removeAttr(&q ...

  10. AC日记——Rmq Problem bzoj 3339

    3339 思路: 恶心: 代码: #include <cstdio> #include <cstring> #include <iostream> #include ...