扩展队列
在一个代理中扩展到数万个队列相对简单 - 但需要对默认配置进行一些更改。
减少线程
在默认配置下,ActiveMQ Classic 被配置为每个队列使用一个调度线程 - 你可以使用目标策略条目上的 optimizedDispatch 属性来设置 - 请参见 配置队列。
ActiveMQ Classic可以选择在内部使用线程池来控制消息的调度 - 但由于许多部署操作系统擅长处理大量线程,因此默认情况下这是关闭的。要启用此选项,请在启动脚本 INSTALL_DIR/bin/activemq 中设置 ACTIVEMQ_OPTS 以禁用专用任务运行器 - 例如:
ACTIVEMQ_OPTS="-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false"
或者你可以在 /etc/activemq.conf 中设置 ACTIVEMQ_OPTS。
注意: 从 ActiveMQ Classic 5.6 开始,专用任务运行器默认情况下被禁用(参见 AMQ-3667)。
要减少用于传输的线程数量 - 请查看使用 NIO 传输 - 请参见 配置传输
这里有一个 示例,它在提供的示例代理配置文件之一中使用。
减少内存消耗
减少每个线程使用的内存 - 请参见 减少内存消耗
减少文件描述符数量
ActiveMQ Classic 默认情况下使用 amqPersistenceAdapter 用于持久消息。不幸的是,此持久化适配器(以及 kahaPersistenceAdapter)为每个队列打开一个文件描述符。在创建大量队列时,你将很快遇到操作系统的限制。
你可以选择其他 持久化选项
或者 - 在 5.3 及更高版本中尝试新的 KahaDB
增加每个进程的文件描述符限制
尝试 搜索你正在使用的操作系统