Java 负载测试ironmq

Java 负载测试ironmq,java,ironmq,Java,Ironmq,我正在对ironmq进行负载测试,它发送500条消息,然后使用它们 到目前为止,我能够发送16个消息的公关秒和消费(读/删除)约5个消息的公关秒。在我的本地机器上使用ironAWSEUWest。 我用v。0.0.18 java客户端sdk 输出: [l-1) thread #0 - dataset://foo] dataset://foo?produceDelay=5 INFO Sent: 100 messages so far. Last group took: 6066 millis

我正在对ironmq进行负载测试,它发送500条消息,然后使用它们

到目前为止,我能够发送16个消息的公关秒和消费(读/删除)约5个消息的公关秒。在我的本地机器上使用ironAWSEUWest。 我用v。0.0.18 java客户端sdk

输出:

[l-1) thread #0 - dataset://foo] dataset://foo?produceDelay=5   INFO  Sent: 100 messages so far. Last group took: 6066 millis which is: 16,485 messages per second. average: 16,485
[l-1) thread #0 - dataset://foo] dataset://foo?produceDelay=5   INFO  Sent: 200 messages so far. Last group took: 6504 millis which is: 15,375 messages per second. average: 15,911
[l-1) thread #0 - dataset://foo] dataset://foo?produceDelay=5   INFO  Sent: 300 messages so far. Last group took: 6560 millis which is: 15,244 messages per second. average: 15,682
[thread #1 - ironmq://testqueue] dataset://foo?produceDelay=5   INFO  Received: 100 messages so far. Last group took: 17128 millis which is: 5,838 messages per second. average: 5,838
[l-1) thread #0 - dataset://foo] dataset://foo?produceDelay=5   INFO  Sent: 400 messages so far. Last group took: 6415 millis which is: 15,588 messages per second. average: 15,659
[l-1) thread #0 - dataset://foo] dataset://foo?produceDelay=5   INFO  Sent: 500 messages so far. Last group took: 7089 millis which is: 14,106 messages per second. average: 15,321
[thread #1 - ironmq://testqueue] dataset://foo?produceDelay=5   INFO  Received: 200 messages so far. Last group took: 17957 millis which is: 5,569 messages per second. average: 5,7
[thread #1 - ironmq://testqueue] dataset://foo?produceDelay=5   INFO  Received: 300 messages so far. Last group took: 18281 millis which is: 5,47 messages per second. average: 5,622
[thread #1 - ironmq://testqueue] dataset://foo?produceDelay=5   INFO  Received: 400 messages so far. Last group took: 18206 millis which is: 5,493 messages per second. average: 5,589
[thread #1 - ironmq://testqueue] dataset://foo?produceDelay=5   INFO  Received: 500 messages so far. Last group took: 18136 millis which is: 5,514 messages per second. average: 5,574 
这是预期的吞吐量吗

当我将负载增加到1000条消息时,我会在一次读取一批100条消息,然后一次删除一条消息时收到零星错误

[thread #1 - ironmq://testqueue] IronMQConsumer                 WARN  Error occurred during delete of object with messageid : 6033017857819101120. This exception is ignored.. Exchange[Message: <hello>229]. Caused by: [io.iron.ironmq.HTTPException - Message not found]
io.iron.ironmq.HTTPException: Message not found
at io.iron.ironmq.Client.singleRequest(Client.java:194)[ironmq-0.0.18.jar:]
at io.iron.ironmq.Client.request(Client.java:132)[ironmq-0.0.18.jar:]
at io.iron.ironmq.Client.delete(Client.java:105)[ironmq-0.0.18.jar:]
at io.iron.ironmq.Queue.deleteMessage(Queue.java:141)[ironmq-0.0.18.jar:]
[线程#1-ironmq://testqueue]删除消息ID为6033017857819101120的对象时发生IronMQConsumer警告错误。此异常被忽略。。交换[电文:229]。原因:[io.iron.ironmq.HTTPException-未找到消息]
io.iron.ironmq.HTTPException:未找到消息
在io.iron.ironmq.Client.singleRequest(Client.java:194)[ironmq-0.0.18.jar:]
在io.iron.ironmq.Client.request(Client.java:132)[ironmq-0.0.18.jar:]
在io.iron.ironmq.Client.delete(Client.java:105)[ironmq-0.0.18.jar:]
在io.iron.ironmq.Queue.deleteMessage(Queue.java:141)[ironmq-0.0.18.jar:]
似乎delete方法在加载时可能会失败

该测试是Ironmq的Camel组件的一部分,可以在这里找到


loadtest就在这里

网络延迟与您可以实现的消息速率有很大关系。从AWS DC外部,您通常会看到每次操作额外增加50-75毫秒。如果您使用并发线程,您将获得更大的吞吐量。此外,我们的公共集群有时会因负载而减速,这就是为什么我们的“生产”计划客户转向速度更快的专业集群的原因

这就是说,我们的所有集群都有一个非常大的更新,这将显著提高性能和吞吐量。您可以在此处下载可安装的版本:


Chad

感谢Chad-3.0版何时在AWS上公开用于测试?您能解释一下在负载下发生的零星删除失败吗?在上面问题的注释中回答了注释。如果消息超时并返回队列,则可能发生这种情况。例如,如果一个请求获得id为123的消息,那么在删除该消息之前60秒,该消息将返回队列,另一个请求将获得消息123。那么谁先删除谁就可以工作,谁接着删除谁就失败了。您能否记录所有邮件ID以确保不会收到两次邮件?您也可以尝试增加消息超时来防止这种情况。似乎是正确的。将超时时间增加到例如2分钟时,删除方法按预期工作。