昨天给客户做巡检,又将整个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. bzoj4764: 弹飞大爷 link-cut-tree

    题目传送门 这道题啊 调了一个晚上 因为写的是一个有根树和n个基环的写法 所以写得很奇怪..... 最后发现单独处理树的时候不能随意改变S(就是原来的根)不然size会出错.... #include& ...

  2. [bzoj4516][Sdoi2016]生成魔咒——后缀自动机

    Brief Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一个魔咒串 [1,2]. 一个魔咒串 S 的非空字串被称为魔咒串 S 的生 ...

  3. 自旋锁spin_lock和raw_spin_lock【转】

    转自:http://blog.csdn.net/droidphone/article/details/7395983 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 临界区Cr ...

  4. (接口自动化)Python3操作MySQL数据库

    基础语法: import pymysql #导入模块 conn = pymysql.connect(host='localhost',user='root', passwd='123456', db= ...

  5. bp神经网络模型推导与c语言实现(转载)

    转载出处:http://www.cnblogs.com/jzhlin/archive/2012/07/28/bp.html BP 神经网络中的 BP 为 Back  Propagation 的简写,最 ...

  6. mysql常用函数示例

    CREATE TABLE `orders` ( `OrderId` INT(10) NOT NULL AUTO_INCREMENT COMMENT '编号', `ProductName` VARCHA ...

  7. vim操作大全

    # 转自 https://blog.csdn.net/weixin_37657720/article/details/80645991 曾经使用了两年多的Vim,手册也翻过一遍.虽然现在不怎么用vim ...

  8. .tar与.gz有什么联系与区别?

    我们在windows下经常进行压缩解压等操作.在linux上也经常会用到,但是比较常见的是.tar.gz 很多人见到就条件反射,压缩用czvf,解压用xzvf.但是,你真的了解这个后缀名吗? 其实: ...

  9. sourceforge的FTP镜像

    https://www.mirrorservice.org/sites/ftp.sourceforge.net/

  10. xunsearch: 开启后台服务,索引……随笔记录

    重启后台服务: cd $prefix ; bin/xs-ctl.sh restart 索引: # 导入 MySQL 数据库的 dbname.tbl_post 表到 demo 项目中,并且平滑重建 ut ...