Apache ActiveMQ Artemis减速

问题描述 投票:0回答:1

在负载很重的情况下,我们可以观察到发送JMS消息的速度减慢。有时发送简单消息最多可能需要30秒。我们注意到的第一件事是巨大的日志文件大小9.5GB。为什么有这么多文件,是否有任何影响文件数量的设置。根据文件:

Apache ActiveMQ Artemis有一个复杂的文件垃圾收集算法,可以确定是否还需要特定的日志文件 - 即所有数据都被删除在相同或其他文件中。如果是,则可以回收并重新使用该文件

但是我们在期刊文件夹中看到了很多文件。它会影响发送消息的性能吗?

UPDATE

我们使用的是嵌入式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);
java jms activemq-artemis
1个回答
0
投票

首先要想到的是,由于journal-pool-files默认为-1journal-file-size默认使用10485760字节(即10MB),因此代理必须在运行时创建并初始化10MB文件,因为消息会累积,并且一旦创建了这些文件,日志就不会缩小消耗消息时返回较小的文件集。创建和初始化文件是一项昂贵的操作,因此您应该调整日志,以便预先创建足够的文件来处理预期的消息量。有关详细信息,请参阅Apache Artemis documentation on the journal

© www.soinside.com 2019 - 2024. All rights reserved.