gpt4 book ai didi

java - PERSISTENT 消息的性能比 NON_PERSISTENT 消息慢得多

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:13 24 4
gpt4 key购买 nike

我发现 PERSISTENT 消息的性能比 NON_PERSISTENT 消息慢得多。我发送和接收non_persistent消息,性能如下。

Method      Number of Msg  Elapsed Time

Sending - 500 messages - 00:00:0332
Receiving - 500 messages - 00:00:0281

我发送和接收持久化消息,性能如下。

    Sending   - 500 messages - 00:07:0688
Receiving - 500 messages - 00:06:0934

此行为在 MQMessage 和 JMSMessage 中都会发生。

感谢所有帮助我解决问题的人。

特别感谢 Shashi、T.Rob 和 Pangea。

最佳答案

鉴于新标题,我发现我现在对这个问题有了回应。

是的,在所有其他方面都相同的情况下,持久消息总是比非持久消息花费更长的时间。不过,它们变慢的程度是高度可调的。为了获得您所看到的结果,队列管理器可能进行了许多最坏情况的调整。以下是一些适用的因素:

  • 磁盘是本地磁盘还是网络磁盘。对于与安装在旋转磁盘上的 NFS 通信的 100MBS 和更慢的连接,本地驱动器几乎总是快得多。 (然而,使用光纤 channel 和电池支持的缓存 Controller 安装到 SAN 几乎总是比本地旋转驱动器更快。)一个常见的例子是使用消费级 NAS 驱动器。尽管家庭 NAS 设备很棒,但吞吐量总是比本地磁盘慢。
  • 对于本地驱动器,驱动器的速度。较新的“绿色”驱动器会改变转速以节省电力。与 10k RPM 驱动器相比,即使是 7200RPM 磁盘也会表现出性能下降。
  • 对于本地驱动器,碎片程度。即使消息很小,它们也会被放入可能高度分散的预分配日志文件中。
  • 将磁盘和日志文件放在同一个本地卷上。这会导致 head 争用,因为在控制返回到应用程序之前,一条消息会写入两个文件。
  • 线性日志与圆形日志。线性较慢,因为日志格式化程序每次都必须分配新的。
  • 是否使用同步点。如果在单个工作单元中写入许多消息,WMQ 可以使用缓存写入并优化扇区放置操作。只有 COMMIT 需要成为阻塞调用。

由于非持久性消息完全在内存中处理,或者溢出到最多一个磁盘文件,因此它们不受大多数​​这些问题的影响。

关于java - PERSISTENT 消息的性能比 NON_PERSISTENT 消息慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11303935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com