服务端性能调优
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等操作,所以客户端一份数据写入会对应服务端三份写网络,在加上业务的读写比例,最终可以计算出单台机器能承载的最大写入量。