繁体   English   中英

Hyperledger Fabric - Fabcar 性能

[英]Hyperledger Fabric - Fabcar performance

我正在尝试使用 Hyperledger Fabric 运行一个项目,其设置类似于 Fabcar 示例。

我对提交交易所需的大量时间感到惊讶。

只是为了使它简单和完全可重现,我测量了在实际 Fabcar 项目上提交事务createCar所需的时间。 设置网络( startFabric.sh javascript)并注册管理员和用户后,我运行invoke.js脚本。 整个脚本大约需要 2.5 秒!

据我所知,运行合约只需要几毫秒。 发送交易建议也是如此。 它主要花时间让 eventHandler 监听和等待事件(在transaction.js库中)。

有没有办法加快这个过程? 我期望能够每秒提交几笔交易。

简短回答:减少 configtx.yaml 中的 BatchTimeout

长答案:

如果你只运行一个查询,就像你描述的那样,这是完全正常的。

如果您查看 configtx.yaml,在“订购者”部分,您可以看到:

Orderer: &OrdererDefaults

# Orderer Type: The orderer implementation to start
# Available types are "solo" and "kafka"
OrdererType: solo

Addresses:
    - orderer.example.com:7050

# Batch Timeout: The amount of time to wait before creating a batch
BatchTimeout: 2s

# Batch Size: Controls the number of messages batched into a block
BatchSize:

    # Max Message Count: The maximum number of messages to permit in a batch
    MaxMessageCount: 10

    # Absolute Max Bytes: The absolute maximum number of bytes allowed for
    # the serialized messages in a batch.
    AbsoluteMaxBytes: 99 MB

    # Preferred Max Bytes: The preferred maximum number of bytes allowed for
    # the serialized messages in a batch. A message larger than the preferred
    # max bytes will result in a batch larger than preferred max bytes.
    PreferredMaxBytes: 512 KB

有两件重要的事情:

  • 批处理超时
  • 最大消息计数

BatchTimeout 定义创建块之前的最长时间。 这意味着,当进行调用时,排序者计算交易并在创建块之前等待 2 秒。 这意味着,每笔第一笔交易将花费 2 秒以上! 但是,如果有另一个调用,比方说,在第一次交易后的 1.5 秒,第二次调用将花费不到 1 秒!

MaxMessageCount,不言自明。 这意味着如果调用次数超过 10 次,即使 2 秒还没有过去,也会创建一个块。 例如,在 0.5 秒的行中调用 10 次将导致在不到一秒的时间内创建一个块。

此设置用于根据您的网络平衡负载。 假设您有一个低使用率的应用程序,少于 10 tps(每秒事务),您可以将 BatchTimeout 减少到小于 2 秒以增加调用的响应时间。 如果你有一个高 tps,你可以增加 MaxMessageCount 来创建更大的块。

其他设置定义了消息的最大大小。

尝试了解您的网络将如何,使用测试用例模拟估计的 tps 并调整参数以找到您需要的配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM