ActiveMQ作为当前最流行的开源JMS实现,已经大量使用在运营产品中,售中产品也将使用ActiveMQ作为消息中间件JMS主要有两种工作模式:点对点模式(point-to)和发布/订阅模式(Publish/Subscribe),有些地方也称为面向队列模式(queue)和面向主题模式(topic)。本次根据RD需求只对Queue模型信息交互模式进行极限性能测试。
测试中,需要部署三种抽象进行Queue模型消息模拟,分别是生产者、消费者和消息队列。根据RD需求,消息队列使用ActiveMQ并采用MySQL的Persistence的模式进行接收和发送工作;消费者和生产者,采用JMS原生接口和线程池模拟并发进行性能测试。
主要测试的ActiveMQ模拟的三个场景,分别是:第一,只发送不接收,测试出消息队列发送的极限;第二,只接收不发送,测试出消息队列对应消费者的极限;第三,发送接收同时工作,测试出消息队列的处理极限。
发送信息每个数据包为cust表一行数据的字符串长度和一个JAVA时间戳,大小大约为0.5KB左右。一个测试样本一个线程的发送数/接收量为10万条,从1条线程开始测试,每次增加3条行程(三台测试机一台增加1),直到吞吐量出现拐点(吞吐量为每秒发送数据条数)。
ActiveMQ开源中间件和配合消息队列持久化的MySQL部署在:
db-testing-ecom380.db01.baidu.com
物理机
CPU
Intel(R) Xeon(R) CPU E5620 @ 2.40GHz 8核
MEM
64G
模拟多线程发送和接收的工作采用JAVA编写,分别部署在3台机器上:
cq01-testing-sf113.vm.baidu.com
虚拟机
CPU I
ntel(R) Xeon(R) CPU E5645 @ 2.40GHz 4核
MEM
16G
cq01-testing-sf114.vm.baidu.com
虚拟机
CPU I
ntel(R) Xeon(R) CPU E5645 @ 2.40GHz 4核
MEM
16G
cq01-testing-ecom-sfcrm04.vm.baidu.com
虚拟机
CPU I
ntel(R) Xeon(R) CPU E5645 @ 2.40GHz 2核
MEM
16G
因为Jmeter提供的JMS测试Sample提供的接收发送服务不够灵活不能满足测试需求,因此只采用Jmeter测试工具对我所开发的测试工具进行验证。
单开发送功能,吞吐量的峰值为:1700左右;峰值时,线程数为60。
单接收送功能,吞吐量的峰值为:;峰值时,线程数为。
需要注意如果数据库里堆积大量未接收消息数据,接收效率将大大受到影响
。
同时开启收发功能,发送吞吐量的峰值为:1000左右;同时开启发送功能,接收吞吐量的峰值为:1000左右;峰值时,线程数分别为接收18-30,发送3-30。
要注意一点,在发送接收同步的时候,它们的吞吐量是相互影响的。
接收数据是要对
MySQL
数据库进行查询操作,接收性能瓶颈主要在数据库
ACTIVEMQ_MSGS
表的查询上,
ACTIVEMQ_MSGS
的数量级对接收性能影响很大
。
1. 单发送模式:(7个CASE)
只列举出了有代表性的几组数据:
|
|
|
|
|
|