编程语言
首页 > 编程语言> > java – PERSISTENT消息的性能比NON_PERSISTENT消息慢得多

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

作者:互联网

我发现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.

解决方法:

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

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

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

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

标签:java,jms,ibm-mq,websphere-7,mq
来源: https://codeday.me/bug/20190620/1249028.html