AutoMQ 通过读写效率优化、资源隔离等方式来优化服务端性能,以达到稳定、高效的运行。
用户需根据自身的硬件环境、业务场景进行参数的调优。
内存相关参数
s3.stream.allocator.policy
设置 AutoMQ 使用的内存分配策略,有 POOLED_HEAP 和 POOLED_DIRECT 两种选择。当内存资源充足时(> 8 GiB),推荐使用 POOLED_DIRECT ,可以降低 GC 压力。
s3.wal.cache.size
控制 Log Cache 的大小,其会影响 Tail Read(追尾读、热读)时缓存数据的最大大小。
s3.block.cache.size
控制 Block Cache 的大小,其会影响 Catch-up Read(追赶读、冷读)时缓存数据的最大大小。Catch-up Read 场景可适当增大该值。
s3.wal.upload.threshold
控制 AutoMQ 在 Log Cache 中积攒多少数据后触发一次 S3 上传。不建议高于 s3.wal.cache.size 的 1/3。
参数推荐值
当内存分配策略为 POOLED_HEAP 时, s3.wal.cache.size + s3.block.cache.size 之和控制在 MaxHeapSize 的 1/4 左右。
当内存分配策略为 POOLED_DIRECT 时, s3.wal.cache.size + s3.block.cache.size 之和控制在 MaxDirectMemorySize 的 1/2 左右(当 MaxDirectMemorySize 较大时,可适当上浮)。
-
| 小规格
| 中规格
| 大规格
|
|---|
物理内存
| 8 GiB
| 16 GiB
| 32 GiB
|
s3.stream.allocator.policy
| POOLED_HEAP
| POOLED_DIRECT
| POOLED_DIRECT
|
-XX:MaxHeapSize
| 6g
| 6g
| 12g
|
-XX:MaxDirectMemorySize
| -
| 6g
| 14g
|
s3.wal.cache.size
| 1,073,741,824
| 2,147,483,648
| 6,442,450,944
|
s3.block.cache.size
| 536,870,912
| 1,073,741,824
| 4,294,967,296
|
s3.wal.upload.threshold
| 357,913,941
| 536,870,912
| 536,870,912
|
网络相关参数
s3.network.baseline.bandwidth
用于声明本机网络带宽的基准值,应设置为本机网络单向(上行 / 下行)能够稳定达到的网络带宽。
因为服务端内部会写WAL、S3、Compaction等操作,所以客户端一份数据写入会对应服务端三份写网络,在加上业务的读写比例,最终可以计算出单台机器能承载的最大写入量。