4.10. 配置代理可用的最大 JVM 内存
默认情况下,代理可用的最大内存为代理 Java 虚拟机(JVM)的最大内存。您可以通过指定新限制来覆盖默认内存限值,该限制是 JVM 或绝对值的最大可用内存百分比。通过指定百分比值,您可以避免在 JVM 内存量更改时更改值。
建议您为单个地址设置内存用量限制,而不是依赖于所有地址的更大的全局限制。如果您有所有地址的全局限制,则内存中的对象数量可以访问影响代理正常操作的级别。要为单个地址设置内存限制,请使用 maxSizeBytes
属性。如需更多信息,请参阅 第 8.1 节 “自定义资源配置参考”。
流程
-
编辑用于代理部署的
ActiveMQArtemis
自定义资源(CR)。 如果要为代理设置内存限值,该限值是 JVM 可用最大内存的百分比,请在 CR 的
spec
部分添加brokerProperties
部分。在brokerProperties
部分中,添加一个globalMaxSizePercentOfJvmMaxMemory
属性并指定内存限制。在以下示例中,内存限值为 JVM 可用最大内存的 60%。spec: ... brokerProperties: - globalMaxSizePercentOfJvmMaxMemory=60
spec: ... brokerProperties: - globalMaxSizePercentOfJvmMaxMemory=60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要为新内存限值指定绝对值,请在 CR 的
spec
部分添加一个brokerProperties
部分。在brokerProperties
部分中,添加一个globalMaxSize
属性并指定内存限制。例如:spec: ... brokerProperties: - globalMaxSize=500m ...
spec: ... brokerProperties: - globalMaxSize=500m ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow globalMaxSize
属性的默认单位是字节。要更改默认单元,请将 m (用于 MB)或 g (用于 GB)的后缀添加到值。配置您希望代理在达到您设置的内存限值后针对所有进一步消息执行的操作。例如:
spec: ... brokerProperties: - addressSettings.<address match>.addressFullMessagePolicy=<action> ...
spec: ... brokerProperties: - addressSettings.<address match>.addressFullMessagePolicy=<action> ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有效操作有:
- PAGE
- 代理将任何其他消息页到磁盘。
- DROP
- 代理静默丢弃任何进一步的信息。
- FAIL
- 代理丢弃任何进一步的消息,并向客户端消息制作者发出例外问题。
- BLOCK
- 客户端消息制作者在尝试发送进一步消息时阻止。
在以下示例中,达到内存限制时,将分页
usa-news
地址的消息。spec: ... brokerProperties: - addressSettings.usa-news.addressFullMessagePolicy=PAGE ...
spec: ... brokerProperties: - addressSettings.usa-news.addressFullMessagePolicy=PAGE ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 CR。