昨天给客户做巡检,又将整个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. 转: Photoshop cs6 快捷键命令大全

    转自: http://www.cnblogs.com/zhen656/p/4249759.html 工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取) 矩形.椭圆选框工具.单行单列 ...

  2. appium的使用

    这套教程年久失修,问题的人也比较多,于是,我重新整理了一套appium入门教程. appium新手入门(1)—— appium介绍 appium新手入门(2)—— 安装 Android SDK app ...

  3. python进程池pool的starmap的使用

    #!/usr/bin/env python3 from functools import partial from itertools import repeat from multiprocessi ...

  4. python memcache操作-安装、连接memcache

    安装memecache wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./c ...

  5. [ Python - 11 ] 多线程及GIL全局锁

    1. GIL是什么? 首先需要明确的一点是GIL并不是python的特性, 它是在实现python解析器(Cpython)时所引入的一个概念. 而Cpython是大部分环境下默认的python执行环境 ...

  6. C#字节数组的常用解码处理方法

    在某些情况下,比如说串口通信或者读取二进制的文件,通常会得到一个byte数组形式的数据. 然而对于这个数据处理常常令人苦恼,因为通常通信情况下,并不是一个字节代表一个字符或者某个数据,而是数据夹杂在字 ...

  7. python算法:嵌套数组转变成一维数组

    比如,输入是:[2, 1, [3, [4, 5], 6], 7, [8]] 则,输出是:[2, 1, 3, 4, 5, 6, 7, 8] def list_flatten(l, a=None): a ...

  8. Swagger 2.0 摘要

    官网地址:http://springfox.github.io/springfox/docs/current/

  9. 安装XHProf分析PHP性能瓶颈(原创)

    废话不多说,直接上代码 ,手动滑稽.o(╯□╰)o   如果已解决您的问题,请在文章底部点击下关注,非常感谢. 下面是LINUX命令行 $ wget http://pecl.php.net/get/x ...

  10. C++的Public.lib(Public.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

    今天开始编译网游服务器,找前辈借来批处理文件,版本控制上拿下代码,库等一系列资源,尼玛啊,编译出错: Public.lib(Public.dll) : fatal error LNK1112: mod ...