【发布时间】:2019-02-22 07:23:42
【问题描述】:
在负载过重的情况下,我们有时会观察到发送 JMS 消息的速度变慢。有时发送一条简单的消息可能需要长达 30 秒。我们注意到的第一件事是巨大的日志文件,总共 9.5GB。为什么有这么多文件,有没有影响文件数量的设置。根据文档:
Apache ActiveMQ Artemis 有一个复杂的文件垃圾收集算法,可以确定是否需要某个特定的日志文件 - 即是否删除了相同或其他文件中的所有数据。如果是这样,该文件可以被回收和重新使用
但是我们在 journals 文件夹中看到了很多文件。会影响发送消息的性能吗?
更新
我们使用的是嵌入式 JMS 服务器版本 2.3.0。以下是我们设置的一些配置:
config.setPersistenceEnabled(true);
config.getAcceptorConfigurations().add(new TransportConfiguration(InVMAcceptorFactory.class.getName()));
config.getConnectorConfigurations().put("connector", new TransportConfiguration(InVMConnectorFactory.class.getName()));
AddressSettings addressSettings = new AddressSettings();
addressSettings.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE);
addressSettings.setMaxSizeBytes(30 * 1024 * 1024L);
addressSettings.setPageSizeBytes(10 * 1024 * 1024L);
addressSettings.setPageCacheMaxSize(20);
config.getAddressesSettings().put("jms.queue.*", addressSettings);
config.setJournalBufferSize_AIO(819200);
config.setJournalBufferSize_NIO(819200);
【问题讨论】:
-
您能提供完整的 broker.xml 吗?您使用的是哪个版本的 Artemis?
-
@JustinBertram 我已经用版本和设置更新了问题
标签: java jms activemq-artemis