云日志服务 LTS-云日志服务Log4j2 SDK:producer性能基线

时间:2025-05-19 17:35:25

producer性能基线

上报日志时,请参考如下参数的测试性能基线,若超出基线值,可能会导致日志上报异常。

E CS 虚拟机配置参考如下

  • 实例规格:通用计算增强型 c7.xlarge.2
  • CPU:4 vCPU
  • 内存:8 GB
  • 基准带宽:100 Mbit/s
  • OS:Huawei Cloud EulerOS release 2.0
  • JVM:OpenJDK 64-Bit Server VM (build 17.0.7+7, mixed mode)

测试程序说明(单个producer)

  • totalSizeInBytes: 104857600
  • maxBlockMs:0
  • batchSizeThresholdInBytes: 1048576
  • batchCountThreshold:40960
  • lingerMs:2000
  • ioThreadCount:具体用例中调整
  • JVM 初始堆/最大堆大小:1GB
  • 发送日志总条数:100,000,000
  • 发送日志总大小:约50GB

按照参数基线值设置后,使用华为云ECS机器作为日志上报环境,通过华为云内网LB网络服务入口进行上报。

SDK上报性能基线测试结果参考

  • 上报日志:测试中使用的单条日志大小约为550字节。为了模拟数据的随机性,测试使用的数据为随机字符串。
  • 性能基线参考如下:
    表1 性能基线

    IO 线程数量

    数据吞吐量

    数据吞吐速率

    CPU 使用率

    2

    8 MB/S

    1.6W 条/S

    15 %

    4

    15.2 MB/S

    3W 条/S

    29 %

    6

    20.7 MB/S

    4.1W 条/S

    36 %

总结如下

  • CPU时间主要花费在对象的序列化和压缩上,在吞吐量较高的情况下CPU使用率比较高。但在日常环境中,单机数据流量均值为100KB/S,因此造成的CPU消耗几乎可以忽略不计。
  • 增加IO线程数量可以显著提高吞吐量,尤其是当IO线程数量少于可用处理器个数时。
  • 调整totalSizeInBytes对吞吐量影响不够显著,增加totalSizeInBytes会造成更多的CPU消耗,建议使用默认值。
  • 当日志上报量超过单个producer时:
    1. 建议拆分日志流,使用多个producer上报日志,分摊流量,以保障SDK处于正常上报状态。
    2. 如果maxBlockMs为0时,SDK处于非阻塞状态,会触发保护机制自动降级,可能会对部分日志做丢弃处理。
    3. 如果maxBlockMs大于0时,SDK处于阻塞状态,阻塞时间为maxBlockMs,可能会造成SDK发送日志处于阻塞状态。
support.huaweicloud.com/usermanual-lts/lts_03_0003.html