【发布时间】:2014-03-20 12:25:37
【问题描述】:
我正在使用 hornetq-core-client api 2.4.0.Final,使用此代码添加消息:
ClientMessage clientMessage = _producerClientSession.createMessage(true);
clientMessage.putStringProperty(MESSAGE_KEY, message);
_clientProducer.send(clientMessage);
我正在重用文档中提到的 ClientSession 和 ClientProducer。在分析期间,我们看到这平均需要 400 多毫秒。这看起来对吗?似乎很慢。我们还安装了 AIO 并在 ubuntu 上运行。
编辑: 这是“iostat -d -x 1”的输出,而排队平均需要 600 毫秒
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 596.00 0.00 2568.00 8.62 1.20 2.01 0.00 2.01 0.04 2.40
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 44.00 0.00 611.00 0.00 12904.00 42.24 0.10 0.17 0.00 0.17 0.05 2.80
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 642.00 0.00 2916.00 9.08 0.02 0.03 0.00 0.03 0.03 2.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 648.00 0.00 2900.00 8.95 0.03 0.04 0.00 0.04 0.04 2.80
编辑 #2 我们更新了配置以包括:
Configuration configuration = new ConfigurationImpl();
configuration.setPersistenceEnabled(true);
configuration.setJournalSyncTransactional(false);
对于创建 ClientSessionFactory 来:
ClientSessionFactory sf = null;
try {
hornetQServer.start();
ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(InVMConnectorFactory.class.getName()));
serverLocator.setBlockOnDurableSend(false);
serverLocator.setProducerWindowSize(100000);
serverLocator.setBlockOnAcknowledge(false);
ClientSessionFactory sf = serverLocator.createSessionFactory();
发送时间现在不到一毫秒。这些设置是否不安全,或者不推荐用于典型情况?
【问题讨论】:
-
您的系统永远不会在磁盘上同步。如果发生故障,您可能会丢失仍在缓冲区中但已被确认的消息。这取决于你需要有多严格。如果你能承受最终丢失几条消息的后果,那没关系。
标签: performance hornetq