一次Weblogic JMS集群调优

2024-09-04 03:32

本文主要是介绍一次Weblogic JMS集群调优,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题背景:如何对Weblogic JMS集群进行调优。

调优参考指标:

对于Weblogic JMS集群的性能调优,在如下这篇文章中有一些总结:
1. 增加-Dweblogic.JMSThreadPoolSize=n(至少为5),以提高处理JMS的线程数,在
jRockit上增加-XXenablefatspin以减少加锁冲突;
2. 采用文件存储策略,将同步写策略设置为Direct-Write,同时在windows平台上启用磁盘写入缓存;
3. 使用分布式目的地时,激活连接工厂Load Balancing Enabled ,Server Affinity Enabled;
4. 为减少服务器不必要的JMS请求路由,如果多个目的地之间存在事务,则部署在同一JMS服务器上,尽量将连接工厂部署到JMS服务器所在的WebLogic实例上,集群环境下,则最好将连接工厂部署到集群中的所有服务器上,而集群中每个JMS服务器和目的地成员尽量使用类似的设置;
5. 启用消息分页存储功能,以释放内存,可以为JMS服务器和目的地设置, 激活Messages Paging Enabled和Bytes Paging Enabled,同时使用限额防止服务器耗尽接收消息的所有可用内存空间;
6. 在运行WebLogic Server进程之外的生产者务必使用流控制, 并增大Send Timeout;
7. 将JMS Server Expiration Scan Interval设很大的值,能禁止主动扫描过期消息;
8. 使用FIFO或者LIFO方式处理目的地消息;
9. MDB的max-beans-in-free-pool不应大于最大MDB线程数(默认线程数/2+1)。

对于web应用服务器和后台处理服务器:

监控服务器资源,发现集群平台服务器负载并不高,而web应用服务器负载同样也不高,服务器性能并没达到瓶颈。进入weblogic控制台,查看线程池,发现在压1000并发的时候,请求积压队列明显较多,而线程数只有50左右。说明一下,weblogic产品模式下,默认初始线程数为25,开发模式下好像是15,weblogic11g采用的是自调整线程池,看名字就可以猜出,他会根据应用情况自动增加减少线程数,而实际情况下,在压力增大的情况下,weblogic也确实增加了线程数,但是增加的线程数不足以应付该需求,于是自然而然地想到了增加线程数。

1.增加前台Weblogic服务器和后端Weblogic服务器内存和线程数。一般原则为一个cpu对应50个线程。

weblogic11g已经不支持在控制台修改线程数,只能通过配置文件,网上有朋友说可以通过增加weblogic启动参数来配置线程数: 
-Dweblogic.threadpool.MinPoolSize=100 
-Dweblogic.threadpool.MaxPoolSize=500 
该方法经试验,并不能生效,还好还一种方法,修改域下面conf里面的config.xml文件: 
<server> 
<name>AdminServer</name> 
<self-tuning-thread-pool-size-min>400</self-tuning-thread-pool-size-min> 
<self-tuning-thread-pool-size-max>400</self-tuning-thread-pool-size-max> 
<listen-address/> 
</server> 
在这里把线程数最大值最小值都设成了400,400这个数值不是乱设的,WebLogic可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也就越多;线程数越小,CPU可能无法得到充分的利用。为获取一个理想的线程数,需要经过反复的测试。一般来说一个CPU最好小于50个线程数

2.在后台Weblogic服务器工程中,对JMS消息的处理启动多线程。

3.JDBC连接池限制

如果网络和数据量都没有问题,则会考虑交易到数据库的连接数是否有限制,和数据库操作的那些交易的SQL请求根本没有到达数据库服务器。我们可以通过中间件的控制台查看JDBC的最大容量(此连接缓冲池可容纳的最大物理连接数)

4.1数据库JDBC连接池限制,设置的本来就小,weblogic默认最大容量为50。

4.2如果一台应用服务器上是多路进行部署的话,查看各路JDBC连接是否均衡

调优原则:

1、出现性能瓶颈时,先找出现瓶颈的地方,是应用服务器还是数据库服务器 
2、判断是否需要修改weblogic线程数以及数据库连接池的值 
3、多次测试,得出一组合适的weblogic线程数的值以及数据库连接数的值

这篇关于一次Weblogic JMS集群调优的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134875

相关文章

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD