Kafka在EC2的Docker上使用Hyperledger Fabric记录巨大的大小



我在AWS EC2环境中尝试Hyperledger Fabric PoC时遇到了一些问题。

我的网络由3个组织、3个对等体(每个对等体1个(、2个订购者、4个卡夫卡和3个动物园管理员组成。每个组织都位于不同的实例中,Ordering+Kafka+Zookeeper共享同一个实例。我还在另一个实例上使用Node SDK 1.2。

一切似乎都很顺利,直到我尝试了另一个例子中的炮兵性能测试。首先,当我尝试对许多同时使用的用户(大约50个(进行测试时,我无法获得高吞吐量性能,网络似乎崩溃了。来自炮兵的图形显示出不稳定的性能,然后它就完全消失了。

现在,第二个也是最重要的一个是,当我将负载降低到5个同时使用的用户时,性能问题消失了,但我注意到,过了很短时间,带有Ordering服务的实例Kafka和Zk的磁盘空间就用完了。我做了一些研究,在我的/var/lib/doker/overlay2目录下发现了大量数据。

在一些较大的容器中,我发现了一个包含1gb.log文件的kafka-logs目录。我设法弄到了纳米一个,它显示了一些证书,如下

开始证书

[…]

最终证书重复

它以1gb的速度分割文件,并在30分钟内存储其中许多文件,比如说3Gb。

我试着在我的compose和daemon.json:中使用docker日志rotate

logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "3"

它实际上在目录/var/lib/docker/containers上工作,其中.log文件被限制为1Mb和最大3个文件。但overlay2的问题仍然存在。

我为卡夫卡创作的码头作曲家:

kafka:
image: hyperledger/fabric-kafka:0.4.10
restart: always
environment:
- KAFKA_MESSAGE_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
- KAFKA_REPLICA_FETCH_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
- KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0.example.com:2181,zookeeper1.example.com:2181,zookeeper2.example.com:2181
- log.retention.bytes = 1000000
- log.retention.ms = 30000
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "3"

正如你所看到的,我也尝试过log.retension.bytes=1000000,但我不确定params的正确用法,因为它没有任何效果。

还重新启动了docker服务。我已经为此挣扎了一周,所以我已经尝试了我在网上找到的最常见的解决方案。

有什么想法吗?

提前感谢

配置参数应为:

KAFKA_LOG_RETENTION_BYTES=1000000
KAFKA_LOG_RETENTION_MS=30000

参考织物测试kafka.yaml:

https://github.com/hyperledger/fabric-test/blob/master/feature-upgrade/dc-orderer-kafka-base.yml

最新更新