对WebSphere MQ Telemetry进行性能测试和性能调优

通过这些内容,读者将能够加深对 ">WebSphere MQ 与 MQTT 的理解,从而可以在实际客户应用场景中进行使用。消息推送作为移动开发的重要技术,应用开发者可以通过它对用户发送推送通知、活动提示,对用户进行提醒,
改善用户体验。消息推送可以是一对一的,比如银行向客户发送还款通知,应用发送业务提醒;消息推送也可以是一对多的,比如商家可以通过它向订阅的用户发布广告消息,或新闻机构向它的读者发送调查问卷等。

WebSphere MQ Telemetry 支持轻量级的 MQTT 协议,该协议支持发布/预定的消息传送方式,通过它可以很容易实现上面提到两种消息应用场景。具体实现时,订阅者只需要关注特定的主题,当有发送者向服务器的该主题发送消息,订阅者可以收到该消息,这里的订阅者可以是一个或者多个。这种通信方式有很大的应用价值,也是 MQTT 的其中一个关键的价值:快速轻量及时的完成消息的一对多发送。

根据 WebSphere MQ Telemetry 的部署经验,为了支持更多的终端设备连接和在发布/预定中表现出更好的性能,需要对 WebSphere MQ 进行一定的参数配置。本文参考了官方的性能报告配置建议结合使用经验,给出一些调节心得,然后使用两个场景,即订阅场景(“少发布者,多订阅者”)和发布场景(“多发布者,少订阅者”)进行测试和监控,得出一种调整方法,供大家对 WebSphere MQ Telemetry 配置时参考。

MQTT 简介

WebSphere MQ Telemetry Transport (MQTT,消息队列遥测传输 ) 是 IBM 为物联网而设计开发的一个即时通讯协议,它是一种开放、精简、轻量级和容易实现的协议,并有可能成为物联网的重要组成部分。

在物联网中,MQTT 协议与相关产品负责把数据由传感器有效的传送到服务器,完成在受限、不稳定网络到因特网或企业网络的连接,实现两者互联互通。在此基础上,互通的物品不仅能通过设备采集信息、实现智能的感知,更能结合先进的信息处理、数据挖掘、人工智能等技术手段,与业务应用整合,实现从后台到前端设备的智能监控,完成进一步的信息化工作。

归根结底,MQTT 协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

非常小的通信开销(最小的消息
大小为 2 字节); 支持各种流行编程语言(包括 C,Java,Ruby,Python 等等)且易于使用的客户端; 支持“发布 / 预定”模型,简化应用程序的开发; 提供三种不同消息发布服务质量,让消息能按需到达目的地,适应在不稳定网络情况下的传输需求。 “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。如环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 “至少一次”,确保消息到达,但消息重复可能会发生。 “只有一次”,确保消息到达且只到达一次。如在计费系统中,消息重复或丢失会导致不正确的结果。

测试场景概述

在本文中,我们对 MQTT 的两个应用场景进行了性能测试与调优,即订阅场景(“少发布者,多订阅者”)和发布场景(“多发布者,少订阅者”)。订阅场景与发布场景是用户在实际使用 MQTT 时经常用到的经典场景。有些用户也在此场景下进行改进以适应不同的现实需求,例如构建集群进行分流,增加高可靠性支持等。图 1 与图 2 具体描述了这两个场景。

图 1. 订阅场景:“少发布者,多订阅者”

在订阅场景中,多个 subscriber 同时订阅了主题“TestTopic”,当 Publisher 向主题“TestTopic”发布一条消息时,所有的 subscriber 都将收到这条消息。

图 2. 发布场景:“多发布者,少订阅者”

在发布场景中,多个 publisher 同时向主题“TestTopic”发送消息,subscriber 将收到所有 publisher 发送到该主题上的所有消息并进行后续处理,例如将消息打印出来或者存储到本地文件用于统计计算。

测试用例

为了使 WebSphere MQ 及 MQTT 达到最大的性能,我们需要考虑以下几个对性能产生重大影响的方面:消息大小,消息发布服务质量,消息总数,网络带宽和 MQTT 客户端数量。

消息大小

MQTT 只需要非常小的通信开销(固定长度的头部是 2 字节),所以在传输比较小的消息时 MQTT 是非常具有优势性的。消息的大小对性能有很大的影响,通常我们建议用户传输小于 4MB 的消息。在消息大小很大的情况下,如果网络环境不稳定,经常发生断线重传,则会引起网络拥塞,影响性能。

消息发布服务质量(QoS)

有三种消息发布服务质量,即 QoS 为 0,1 或 2:

QoS=0:“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

QoS=1:“至少一次”,确保消息到达,但消息重复可能会发生。

QoS=2:“只有一次”,确保消息到达且只到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

消息总数

短时间内消息总数越大对网络的压力就越大。通过增大消息总数,可以观察在网络条件一定的情况下,消息总数和 MQTT 吞吐量之间的关系。

网络带宽

网络带宽在 MQ 及 MQTT 进行消息传递时对性能的影响显而易见,在此就不再赘述。本文阐述的是 MQ 及 MQTT 的性能测试及调优方法,测试中的数据仅供参考,官方数据请见 MQTT 性能测试报告。

MQTT 客户端数量

在实际应用中,MQTT 客户端的数量通常是巨大的。在横向增加客户端数量的同时,观察 MQTT 服务吞吐量及响应时间的变化是必要的。由于 MQTT 使用的是发布订阅方式,在订阅场景中,增加 MQTT 客户端的数量会使吞吐量相应的线性增长,而响应时间变化不大。在发布场景中,随着发布者的增多,吞吐量会线性增加,而响应时间则被订阅者处理消息的速度所限制。

根据以上的参数变化,我们得到以下需要测试的用例。

表 1. 性能测试用例

测试场景 消息大小 QoS 消息总数 网络带宽 MQTT 客户端数量 订阅场景 32 bytes 2 10000 10G 500 订阅场景 256 bytes 2 10000 10G 500 订阅场景 256 bytes 1 5000 10G 500 订阅场景 256 bytes 0 20000 10G 1000 发布场景 32 bytes 2 10000 10G 500 发布场景 256 bytes 2 10000 10G 500 发布场景 256 bytes 1 5000 10G 500 发布场景 256 bytes 0 20000 10G 1000

测试环境准备

准备测试机器

我们在测试中使用 3 台机器,分别用来运行 WebSphere MQ,发布消息的应用程序和订阅消息的应用程序。三台机器之间通过万兆网相连。需要注意的是,在机器配置,网络环境,操作系统不同的情况下,性能测试的结果会有不同,同类环境才具有可比性。

图 3. 测试环境部署

时间: 2024-10-24 19:27:06

对WebSphere MQ Telemetry进行性能测试和性能调优的相关文章

WebSphere JDBC Adapter入站服务性能调优

概述 JDBC Adapter(简称 Adapter)入站服务被广泛应用于需要对数据库中业务数据表进行监控的企业应用集成中.由于企业应用的规模不同,对 Adapter 入站服务的性能要求也不同,如何配置 Adapter 入站服务以提高 Adapter 处理事件的性能在实际应用中极其重要.本文将全面介绍如何通过调整 Adapter 入站服务配置,以满足各种企业集成中对 Adapter 入站服务的性能需求. JDBC Adapter 入站服务简介 JDBC Adapter 是符合 J2CA 规范,运

如何通过WebSphere MQ Telemetry使用MQTT协议

WebSphere MQ Telemetry Transport (MQTT) 是一项异步消息传输协议,是 IBM 在分析了他们的客户在其业务中使用 http://www.aliyun.com/zixun/aggregation/13387.html">WebSphere MQ 消息传递的情况(包括通过它传递数据)之后专门为物联网所定制的重要的轻量级消息传输协议.IBM 发现,数据经常是在企业外部的远程位置生成的,而且数据在从远程位置到达企业之前通常要经历一个复杂的过程.这时往往将数据人工

IBM WebSphere Cast Iron与WebSphere MQ Telemetry Transport协作实现业务消息推送

基于物联网的 WebSphere MQ Telemetry Transport(简称 MQTT)相关技术在云计算和移动设备之间架起一道桥梁,在低带宽和不稳定的移动互联网中为您提供可靠的网络服务. 云计算.移动互联网.物联网是当前最炙手可热的几个关键词,也是未来最具发展潜力的几个关键技术.云计算可以为人们提供强大的计算能力和存储能力,能够有效地解决移动设备计算能力不足和存储量小的局限性,然而实现这一切的前提是拥有良好的网络环境,包括稳定的链接和高速的传输条件.然而当前移动互联网正处于起步阶段,无法

介绍IBM WebSphere Commerce性能调优的基本原则和方法

如果需要深入分析复杂问题,可以借助 IBM 提供的性能分析工具做进一步的研究. 参数优化建议 WebSphere http://www.aliyun.com/zixun/aggregation/3914.html">Commerce 是基于 WebSphere 应用程序服务器开发的大型电子商务应用程序.在初次成功安装 WebSphere Commerce 应用程序之后,安装程序已经对服务器上的关键参数进行了初始化调整.这组默认值是 WebSphere Commerce 测试团队经过反复测试

IBM WebSphere应用服务器性能调优工具介绍

WebSphere Application Server Performance Tuning Toolkit (PTT) 是一款功能丰富且简单易用的调优工具,其安装和使用都非常简单,用户不需要在服务器端进行任何配置,只要在客户端指定要连接的 dmgr 的 IP 地址和 soap 端口就可以对远程系统进行监控和调优.同时它又是一款绿色软件,下载解压后即可启动,并且可以随意拷贝到任何其他地方.作为系列文章的第一部分,本文将简单介绍 PTT 的主要功能. WebSphere Application

IBM WebSphere Portal Web Content Manager和DB2调优指南

简介:正在寻找一个资源中心来调优 WebSphere Portal Web Content Management 和 IBM DB2 for Linux, UNIX, and Windows 环境?本文描述该环境独特的.需要特殊考 虑的各个部分.您将学习如何调优 Application Server 和 WebSphere Portal.作为良好的开端,您将 学习一些应该设置为指定值的各种注册表变量和数据库管理器及数据库配置参数.最后,持续维护小节提 供了如何使 DB2 系统随系统增长仍然高效运

通向架构师的道路(第三天)之apache性能调优

一.总结前一天的学习 在前两天的学习中我们知道.了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构.这个架构是一个非常基础的J2ee工程上线布署时的一种架构.在前两天的教程中,还讲述了Http服务器.App Server的最基本安全配置(包括单向https的实现), 它只是避免了用户可以通过浏览器侵入我们的Web访问器或者能够通过Web浏览器来查询我们的Web目录结构及其目录内的文件与相关内容,这种入侵我们把它称为: Directory traversal

ANDROID性能调优

http://www.trinea.cn/android/android-performance-demo/#comment-115 本文主要分享自己在appstore项目中的性能调优点,包括同步改异步.缓存.Layout优化.数据库优化.算法优化.延迟执行等.   性能优化专题已完成五部分: 性能优化总纲--性能问题及性能调优方式性能优化第三篇--Java(Android)代码优化性能优化第二篇--布局优化性能优化第一篇--数据库性能优化 性能优化实例    一.性能瓶颈点 整个页面主要由6个

性能调优攻略

关于性能优化这是一个比较大的话题,在<由12306.cn谈谈网站性能技术>中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法.本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充. 在开始这篇文章之前,大家可以移步去看一下以前发表的<代码优化概要>,这篇文章基本上告诉你--要进行优化,先得找到性能瓶颈!但是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定