我有一个保存持久消息的持久队列。消息以大约每秒10条消息的速率到达队列。
客户端无法以该速率获取这些消息。结果,服务器上的队列不断增长。
每条消息不到1KB,并且我在服务器和我的机器之间有一条健康的2 Mbps线路。使用网络监控实用程序时,我发现它几乎没有使用任何带宽。
到目前为止,客户端没有对消息执行任何操作,只是将它们打印到控制台,因此客户端的处理时间几乎为0。
其他一些细节:我使用的是一个java客户端。我已经将客户端设置为预取10000条消息。(也尝试使用默认值)往返时间约为350ms。消息是单独确认的。
可用的资源没有得到充分利用,在我看来,每秒10条消息几乎不是什么负载。如何加快速度,以便将队列中的消息更快地传输到客户端。可能是使用了某种批处理。
发布于 2013-03-28 18:35:17
如果您每隔350ms间接确认一次消息,我预计消费者可能会达到大约1/0.35或每秒2.9条消息。然而,协议可能不是那么有效,它可能需要两次往返到服务器来确认消息并获取下一条消息。即每秒1.4条消息可能更现实。
350ms的往返时间是非常高的,你可以在这段时间内环游世界并返回,所以简单的解决方案可能不是最适合你的。例如,伦敦,纽约,->。
我会试着让你的客户本地有一个代理。这样,往返就是您的客户和本地经纪人之间的往返。
https://stackoverflow.com/questions/15679461
复制相似问题