>>This optimal ratio depends on many factors including:
>>>the JDK version and operating system used
>>>whether or not the producers and consumers are running in the same JVM
>>>whether or not concurrent consumers are being used
>>>whether or not the producers/consumers are running on separate hosts
>>>the destination prefetch size
==>优化率依赖很多因素,包含如下:
==>使用的JDK版本和OS
==>producer和consumer是否在同一JVM
==>是否使用了并发的消费者
==>producer和consumer是否在独立的主机上运行
==>目标预取大小
前提:
>>>所有消息采用文本消息(TextMessage)并且大小是2KB==>All messages are text based and of a fixed size (2 KB).
>>>如无特别说明,producer,consumer和broker在同一主机的不同的JVM中。
1.消息大小==>消息类型影响性能的因素在于消息的大小,
==>Wherever possible, one should minimize the message size by choosing an appropriate message type.
==>可能地方,应该最小化消息大小,通过选择合适的消息类型来做到这一点。
==>建议ByteMessage
==>For example, a byte message would be smaller than its equivalent in text.==>例如,ByteMessage小于同样的TextMessage。
2.性能与可扩展性以及安全性的权衡:
==>Adding brokers in a cluster does decrease performance, but also increases scalability and data security.
==>往集群中添加Broker节点会降低性能,但是会增加可扩展性和数据安全性。
3.队里还是主题==>使用队列还是主题,一般取决于基础设施的需要。
==>with the 1/1/1 test registering about 18600 msgs/sec when using a queue and about 23500 msgs/sec when using a topic on the LOCAL-LINUX platform.
==>使用1:1:1(1producer:1destination:consumer)的方式,使用队列时,吞吐量是18600 msgs/sec,而采用主题模型,吞吐量达到23500 msgs/sec,前提是在本地linux上测试的。
==>仅在1:1:1下,topic吞吐量高于queue。
==>采用主题时,增加消费者的数量不是什么好事,因为每增加一个消费者,消息的备份都会发给主题。
==>但是多消费者,是可以提高队列的吞吐量的。
4.应答方式
==>Deciding between AUTO_ACKNOWLEDGE and DUPS_OK_ACKNOWLEDGE for performance purposes depends on the topology.
==>本着性能的目标,选择AUTO_ACKNOWLEDGE还是DUPS_OK_ACKNOWLEDGE,取决网络拓扑
==>在broker网络下,建议auto_acknowledge,在客户端和broker在同一个机器时,不走网络的话,建议dups_ok_acknowledge。
==>一般来说dups_ok_acknowledge性能要高于auto_acknowledge,前提是基本不走网络时。
==>auto_acknowledge以为仅且一次应答,需要监控应答次数。而dups_ok_acknowledge不需要监控应答次数,允许重复应答,所以性能要高些,但前提是不走网络。
5.事务与非事务
==>When using transactions, messages are sent in a group (batch) before being acknowledged.
==>当使用事务时,在消息应答前,消息是按组或者批量发送的。
==>因此采用事务比不采用事务的性能要高,事务可以分别用于生产者和消费者上。
6.使用VMTransport
==>Using the VM transport increases the performance significantly if the broker and the clients are in the same VM.
==>This is because with the VM transport, messages are not sent to a network and no socket creation is necessary.
==>如果broker和clients在同一个JVM中,采用vm通道对性能有很大程度的提高。
==>这是因为采用vm通道,消息不会发送到网络,不必创建socket。
7.持久化与非持久化
==>The number of messages was reduced by more than 50% when the producer (but not the consumer) is made persistent.
==>If durable subscribers are used then the number of message per second falls dramatically.
==>当生产者采用持久化方式时,每秒消息的数量减少超过50%。(消费没有采用持久化)
==>如果持久化订阅也用上的话,每秒消息的数量会极大的减少。(消费者持久化,即持久化订阅)
==>持久化的方式:producer持久化、broker持久化、consumer持久化==>producer持久化??
8.broker数量
==>the number of messages sent per second decreased as the number of brokers increases.
==>当broker网络中,broker的数量增加时,每秒发送消息的数量在减少。
==>With many more clients connected to a single broker those performance losses are offset by the benefits of scalability.
==>伴随着单broker上更多的客户端连接,性能的损失与可扩展性带来的好处需要权衡。
9.生产者数量==>10/1/1==>#producers/#consumers/#brokers==>n/1/1
==>there are no significant differences in performance when the number of producers keeps increasing in the Local-Linux environment.
==>between 1/1/1 to 10/1/1 the average plateau is 18800 msg/sec. In general, 2/1/1 showed a slight performance boost.
==>producer和broker同在一台机器时,生产者数量的增加在性能上没有带来明显变化
==>一般,2个生产者相对1个有稍微的性能提升,再增加生产者作用就不明显了。
10.消费者数量
==>In both environments, Local-Linux and EC2-Linux,
==>we see that the 1/1/1 configuration does not give the best performance
==>if the procedures and consumers are in different JVM. However,
==>when the producers and consumers were placed in the same JVM the results were different
==>as illustrated in Figure 4 and Figure 5 for Local-Linux and EC2-Linux respectively.
==>当producer和consumer在不同JVM时,无论是在实体linux还是虚机linux环境下,可以看到1/1/1配置不会带来最好的性能,。
==>当producer和consumer在同一个JVM时,在实体linux和虚机linux是不同的,在实体linux下,1/1/1的性能基本是最好的,比1/2/1稍差些。在虚linux下,1/1/1基本是最差的。
==>一般消费者保持在2或者3个时,达到最佳性能。再增加消费者性能没有明显变化。(实体linux下不同JVM时,建议2到3个消费者最佳)
分享到:
相关推荐
性能调优是确保Websphere MQ高效运行的关键环节,对于优化系统资源利用、提高服务响应速度和降低系统延迟具有重要意义。 一、理解Websphere MQ核心概念 在进行性能调优前,首先要理解Websphere MQ的基本概念,包括...
Websphere MQ应用架构以及性能调优和测试,IBM内部保密资料。
【MQ性能调优】在软件开发中,MQ(Message Queue)是重要的中间件技术,用于应用程序之间的异步通信。本文主要关注MQ的性能优化策略,包括API调用、消息大小、队列操作、消息处理方式以及队列属性的调整。 1. API...
- **日常监控与性能调优**:持续监控MQ的运行状态,通过测试数据进行性能调优。 - **故障排查**:当MQ服务出现问题时,利用测试器复现问题,快速定位原因。 5. **MQ测试器的使用步骤** - **设置消息参数**:...
6. **测试和优化**:进行充分的测试,包括异常处理和性能调优,以确保在生产环境中稳定运行。 在提供的`mq_demo3`压缩包中,可能包含了一个简单的Java示例,演示了如何连接IBM MQ并执行基本的PUT和GET操作。你可以...
11. **性能调优**:包括队列深度优化、通道并发控制、缓冲区管理等,都是提高IBM MQ性能的关键。 12. **分布式事务**:支持X/Open XA标准,允许跨多个资源管理器的分布式事务处理。 13. **监控和日志**:MQ提供了...
《MQ(Multiqueue)技术在块设备层的应用与流程详解》 ...理解MQ的工作流程对于系统优化、性能调优以及相关开发工作至关重要。深入研究MQ的原理和实践,将有助于提升系统效率,满足日益增长的存储性能需求。
完整的描述了aix中如何安装和使用db2&was$MQ,以及相关的调优和参数配置
MQ错误代码是MQ在运行过程中遇到问题时返回的标识符,它们提供了关于问题性质和原因的重要信息。这份“IBM MQ错误代码大全中英文对照覆盖所有MQ出现的错误”文档集合了MQ可能遇到的各种错误代码,对于理解和解决MQ...
`MQExplorer`可能是安装程序或应用程序本身,而`META-INF`目录通常包含关于软件元数据的信息,例如版本、版权等。 总之,IBM MQ Explore是Windows环境下管理IBM MQ的必备工具,通过其丰富的功能和直观的界面,可以...
压缩包内的文件"空气质量传感器"可能是关于MQ135传感器的原理介绍或使用指南,"MQ135传感器"可能包含了MQ135的详细参数和技术规格,而"有害气体检测模块"则可能是一整套包括硬件电路和软件程序的解决方案。...
IBM MQ,全称为IBM Message Queue,是IBM提供的一款企业级的消息中间件,它允许应用程序通过消息传递进行异步通信,增强了系统的可靠性和可扩展性。本文将深入解析MQ的使用,特别是IBM MQ的实例代码、文件传输以及`...
这些文档将提供关于传感器的工作原理、电气特性、接口电路设计和驱动程序等相关信息。STM32F103是意法半导体的一款微控制器,广泛应用于嵌入式系统中,它可能被用来控制MQ2传感器并处理其输出信号。驱动程序部分可能...
IBM WebSphere MQ,通常简称为IBM MQ,是IBM公司提供的一款高效、可靠的企业级消息中间件产品。它在企业系统间传输数据,确保了数据的可靠传输和事务处理,是构建分布式系统和实现异构环境间通信的重要工具。在本...
MQ-2烟雾传感器是一种常见的气体检测模块,广泛应用于火灾报警系统、智能家居安全以及环境监测等领域。这款传感器能够检测多种可燃气体,如甲烷、丙烷、氢气,同时也能对烟雾进行探测。51单片机是经典且广泛应用的微...
【IBM WebSphere MQ安装包详解】 IBM WebSphere MQ,前身为IBM MQSeries,是IBM公司推出的一款企业级的消息中间件产品。它在信息技术领域扮演着至关重要的角色,为跨网络、操作系统和应用程序提供了高效、安全的...
3. **Websphere+MQ入门教程7.pdf** - 这是整个系列教程的第七部分,可能涵盖了更复杂的配置、管理任务,或者深入讲解了MQ的某些特定功能,如集群、安全设置或性能调优。 4. **MQ错误代码.pdf** - 这份文档很可能列...
以下是关于`com.ibm.mq.jar`的一些关键知识点: 1. **MQSeries Java API**:IBM MQ提供了丰富的Java编程接口,使得开发人员可以轻松地集成消息队列功能到Java应用中。`com.ibm.mq.jar`是这些API的基础,它包含...
MQ-2气体传感器则是一种常见的传感器,主要用于检测可燃气体、烟雾以及一氧化碳等有害气体的浓度。在本项目中,我们将Zigbee模块与MQ-2传感器结合,实现远程监控气体浓度的能力。 Zigbee协议栈基于IEEE 802.15.4...
IBM MQ(原名WebSphere MQ)是IBM提供的一款企业级的消息中间件,它允许应用程序在不同的网络协议、操作系统和硬件之间可靠地交换信息。在这个场景中,"IBM MQ C++实例代码,连接MQ获取消息"是指使用C++编程语言与IBM...