在 IBM MQ Advanced for Developers 中可以实现的每个实例的最大吞吐量是多少?

Whats the maximum throughput per instance can be achieved in IBM MQ Advanced for Developers?

我目前正在使用 IBM MQ Advanced for Developers 服务器来测试我们的客户端,并且能够使用以 jms 编写的示例消费者实现每秒大约 1000 条消息,这似乎非常慢。这是开发服务器的限制吗?如果是,那么使用许可的生产 IBM MQ 服务器可以实现多少吞吐量。

没有与 IBM MQ Advanced for Developers 相关的人为限制。它与 IBM MQ 的许可生产版本相同。

您没有说明您使用的是什么类型的机器、您的消息的持久性、它们的大小或任何其他合格标准。

你说的是客户端,不知道你说的是“网络附加应用”还是“驱动应用”。显然,如果您的程序是 运行“客户端附加”(MQ 对网络附加的说法),那么网络性能也会受到影响。

在我的 Windows 笔记本电脑上,我使用简单的 C 语言本地绑定程序获得 4500 个非持久性 msgs/sec 或 2000 个持久性 msgs/sec。通过客户端连接(仅使用本地主机,实际上并没有通过真实的网络连接出去)我得到 2700 个非持久性 msgs/sec,或 1500 个持久性 msgs/sec.

您应该阅读 MQ Performance Reports 以了解您可以获得的预期利率的详细信息。

作为一名前 MQ 性能人员,我会说 - 这取决于。

在一个层面上,您可以问 - 隔离过程中的一个应用程序可以做什么。 对于持久性消息,这将归结为您可以写入日志文件的速率。

如果您有 10 个并行应用程序,每个应用程序都从自己的队列中放入和获取,那么您将不会获得 10 倍的吞吐量 - 您可能会获得 8 或 9 倍的吞吐量。 如果它们都在处理同一个队列,那么随着队列使用的序列化,吞吐量可能会下降更多。

如果只有一个应用程序正在写入日志,则该应用程序可能会看到 1 毫秒的响应时间。如果您同时有 10 个应用程序 运行ning,它们可能会看到 3 毫秒的响应时间 - 因此单个吞吐量会下降,但线程越多,整体吞吐量就会上升。

如果您有通过网络传入的请求,则需要增加网络时间,但您可以 运行 更多客户端,从而提高吞吐量。

如果您的应用程序内置延迟 - 它可能只处理较低的消息速率。你可以有很多(1000s)这样的并获得高>总体<吞吐量。 如果您的应用程序尽可能快地放置和获取,您可能会发现在吞吐量稳定之前可以 运行 10-100 个实例。

假设您想要 运行 装箱,因此它使用了 75% 的 CPU,并且日志记录占 50%。

如果盒子上只有 MQ,那么与盒子上有 DB2 相比,这可以 运行 多消息(DB2 使用 CPU 的 50%)

如果您有一个应用程序 (DB2) 对磁盘进行锤击,那么 MQ 吞吐量将会下降。

如果您有很多应用程序放入服务器队列 - 和一个服务器程序,您会发现吞吐量受服务器处理工作的速率限制。如果它正在做 DB2 工作,它会比没有 DB2 工作要慢。如果您发现服务器队列深度超过 5,那么您需要更多服务器实例。

正如莫拉格所说,查看性能报告,但它们不是最清晰的报告。