我有一个运行在EventConsumerService中的SQS使用者,它需要成功处理多达3K TPS,有时需要处理多达20K TPS(或每分钟120万条消息)。对于处理的每个消息,我都会对DataService的TCP VIP进行REST调用。我正在尝试执行负载测试,以找到一台主机可以在EventConsumerService中处理的最大TPS而不会过度紧张:
这是我执行性能测试的方式:
我在一个主机上同时设置了消费者和其他服务,原因是我想了解每个主机上这两个服务的负载。
我使用TPS生成器用一百万条消息填充SQS队列
EventConsumerService服务已在生产中运行。消息开始填充SQS队列后,我立即可以看到请求已发送到DataService。
以下是我正在调整以查找messagesPolledPerSecond的参数:
messagesPolledPerSecond = (numberOfHosts * numberOfPollers * messageFetchSize) * (1000/(sleepTimeBetweenPollsPerMs+receiveMessageTimePerMs))
messagesInSurge / messagesPolledPerSecond = ageOfOldestMessageSLA
ageOfOldestMessage + settingsUpdatedLatency < latencySLA
我保持不变的SqsConsumer变量是:
其他因素都是游戏因素
但是,使用上述参数,由于服务器错误,我看到大量消息发送到DLQ,因此显然我将值设置得太高。这种测试方法似乎效率很低,而且我找不到最佳的TPS,它不会导致将如此多的消息发送到DLQ,也不会导致最老的消息具有如此高的近似年龄。
我对如何最好地进行测试表示赞赏。如果我们可以安排时间聊天,那将非常有帮助。直接下午我