【发布时间】:2009-08-27 20:28:07
【问题描述】:
对于我们的一个应用程序,我们正在考虑将扫描的图像放到大小为 10-12k 的 MSMQ 上,全天大约有 15000 张图像 (150 MB)。
有没有人认为性能方面可能存在问题? 我们是否应该采用这种方法有什么建议,如果没有,还有什么建议?
我们将使用 MSMQ 绑定到 WCF。
谢谢
【问题讨论】:
对于我们的一个应用程序,我们正在考虑将扫描的图像放到大小为 10-12k 的 MSMQ 上,全天大约有 15000 张图像 (150 MB)。
有没有人认为性能方面可能存在问题? 我们是否应该采用这种方法有什么建议,如果没有,还有什么建议?
我们将使用 MSMQ 绑定到 WCF。
谢谢
【问题讨论】:
这是一个多大的 MSMQ 网络?如果您在 150 个服务器上有 1500 个队列,这显然是轻而易举的事。但是让我们假设最坏的情况:单个服务器、单个旋转磁盘(即不是 SSD)和消息的持久存储。每条消息需要一些 IOP,并且您的消息将以每小时约 2000 条的速度到达。这不到每秒 1 次,因此您的磁盘需要 1 到 10 次 IOPS。没什么大不了。不过,如果您有突发流量,您可能会遇到一些延迟问题。
消息大小不是一个真正的问题。它远低于 MSMQ 限制,远低于今天的正常 RAM 大小,甚至旧的 10Mbit 以太网似乎也足够快。在这么低的消息大小下,IOPS 的数量并没有真正变化。
即使是适当的设计也不是那么重要。放入 SSD 可以快速解决问题,即使是 30GB 的小容量也可以容纳 200 天的消息。由于它们通常被指定为 1000 次以上的完全重写,因此在您的情况下加起来需要 200.000 天 - 很多。
【讨论】:
我不知道是否会有 - 你为什么不试试看呢? 150MB 现在不是那么多,所以也许不会有问题,但通常最好测试这些东西以确定。
【讨论】:
MSMQ 最多只能接受 4 兆的消息,所以是的,应该没问题。
--编辑
我误读了这个问题,但我的回答仍然准确。只要消息小于 4 兆,一切都会好起来的 :) 重新措辞。
【讨论】:
MSMQ 可以接受最大为 4 兆的消息。每条消息/图像 10-12k 不会有问题。
Optimizing Performance in a Microsoft Message Queue Server Environment
【讨论】:
我宁愿将图像发布到服务器,为它创建一个 guid 并用过期日期标记它。
然后将包含图像的 URL/GUID 的消息发布到 MSMQ。
图像服务器上的批处理作业会不时清理过期的图像。
否则,如果它只有 12k... 没有一些真实世界的测试,没有人会知道。上面的方法也不难实现。
【讨论】: