硬件要求¶
推荐配置¶
下表是对开发(体验)环境和生产环境节点推荐的配置:
配置 | 开发(体验)环境 | 生产环境 |
---|---|---|
CPU | 1.5GHz * 2核 | 2.4GHz * 8核 |
内存 | 2 GB | 8 GB |
存储 | 40 GB | 4 TB |
带宽 | 1 Mb | 10 Mb |
提示
- 如果选择 WeBASE-Docker 方式部署节点,部署使用的镜像会包含一个 fisco-bcos 节点 和 WeBASE-Front 应用, 需要注意内存大小的选择。关于部分方式的类型,请参考:企业环境部署
- 一个 WeBASE-Front 服务会消耗大概 700MB 左右内存。关于 WeBASE-Front 请参考:前置服务 WeBASE-Front
预估硬件资源¶
开发(体验)环境¶
对于开发(体验)环境,请参考:推荐配置 中开发(体验)环境推荐的配置。
提示
- 开发(体验)环境一般使用开发工具中的一键脚本 build_chain.sh 在单台主机部署 4 个节点和一个 WeBASE-Front 服务。具体操作,请参考:开发工具部署
生产环境¶
生成环境作为正式提供对外服务的环境,需要在上线前对整体容量量进行一个预估。 根据容量预估的结果,来预估部署时需要的硬件资源。包括,主机数量,主机配置(CPU,磁盘,内存),网络带宽等等。
重要
- 对部署所需要的硬件资源进行一个合理的预估,不仅能够提高硬件资源的利用率,还能提高运行环境的稳定性
- 在部署生产环境之前,如果没有对预期环境做合理的容量评价,那么应用上线后,可能会出现大量的计算资源和存储资源闲置,造成资源利用率低;相反,还可能会出现流量过载,造成服务器高负载,服务崩溃,延迟高,用户体验差等问题
提示
- 为了减少成本,一台机器只部署一条链的一个节点,一台机器可以部署多条链的一个节点
容量预估¶
容量是指系统可处理容纳的最大能力,包括:
- 需要的区块链数量
- 每条链的用户量
- 每条链的交易量,每笔交易的平均大小,交易的流量大小
- 每条链的 TPS
- 每条链的 QPS
在做容量预估时,如果有现有流量数据,那么可以参考现有流量数据来进行预估;如果没有,那么可以根据具体的业务场景、业务类型、流量入口的数据、引流渠道等来估算容量的大小。
性能参考数据¶
影响区块链性能的指标因素很多,包括:
- 硬件处理能力
- 包括 CPU 主频、CPU 核心数、 内存大小、磁盘 IO、带宽速率等
- 部署情况
- 受参与共识的节点数量影响, 通常共识节点数量增多性能会有所下降
- 算法
- 包括共识机制、网络分发、压缩、编解码、加解密、签名验签等密码学算法
- 系统参数
- 业务逻辑本身的复杂程度,通常表现为业务智能合约的复杂度,合约逻辑更复杂导致计算需要更多资源,性能也会更低;
下面列出 腾讯云服务器 配置环境下的 两组 FISCO-BCOS 性能测试数据:
- 测试服务器配置
选项 | 参数 |
---|---|
服务器类型 | 腾讯云虚拟机 |
CPU | Intel(R) Xeon(R) CPU E5-26xx v4 (8 核) |
内存 | 16GB |
硬盘 | 高速云硬盘,IOPS 上限 6000,读写吞吐上限 150MB/s |
网卡 | 千兆网卡 |
操作系统 | CentOS 7.3 |
- 测试环境数据
配置 | 描述 |
---|---|
FISCO-BCOS 版本 | FISCO BCOS V2.7.0 |
MySQL 版本 | 5.5.64-MariaDB |
主机数量 | 4 台主机,单链,4 节点(满足 3 * n + 1) |
测试工具 | Caliper |
测试业务 | 转账 |
- 测试结果数据 1:固定节点测试
密码算法 | 合约引擎 | 存储引擎 | 用户量 | 交易量 | QPS | TPS |
---|---|---|---|---|---|---|
非国密 | Solidity | Rocksdb | 1W | 100w | 10000 | 9616 |
非国密 | 预编译 | Rocksdb | 1W | 100w | 18000 | 14543 |
非国密 | Solidity | Mysql | 1W | 100w | 6000 | 5800 |
非国密 | 预编译 | Mysql | 1W | 100w | 8000 | 8553 |
国密 | Solidity | Rocksdb | 1W | 100w | 8000 | 6281 |
国密 | 预编译 | Rocksdb | 1W | 100w | 9000 | 7183 |
- 测试结果数据 2:多群组交易测试数据
多群组交易测试环境配置
- 国密算法、Solidity 合约、RocksDB 引擎,PBFT 共识机制
- 交易大小:1.48 KB;出块间隔:1s;每个区块最大交易数量:6000;交易池上限:150 0000
群组 | 用户量/群组 | 交易量/群组 | TPS/群组 | QPS/群组 | CPU% | 内存% | 带宽Mbps |
---|---|---|---|---|---|---|---|
4 节点 1 群组 | 10000 | 500000 | 5924 | 8000 | 720 | 6 | In: 35 Out: 34 |
4 节点 4 群组 | 10000 | 500000 | 1364 | 2000 | 750 | 28 | In: 42 Out: 32 |
4 节点 8 群组 | 10000 | 200000 | 629 | 1000 | 780 | 32 | In: 42 Out: 32 |
4 节点 16 群组 | 10000 | 100000 | 261 | 500 | 790 | 38 | In: 42 Out: 31 |
4 节点 32 群组 | 10000 | 50000 | 129 | 300 | 790 | 61 | In: 48 Out: 30 |
4 节点 64 群组 | 10000 | 20000 | 43 | 100 | 790 | 86 | In: 38 Out: 25 |
磁盘类型¶
重要
- 区块链的应用中,会存在同步大量链数据的场景,特别是一台主机上部署多条链的节点(一条链一个节点),此时对硬盘的性能要求相对会比较高。所以,在进行硬件资源评估之前,一定要选择合适的磁盘类型。
下图是腾讯云的的磁盘类型及性能:
磁盘类型 | 随机 IOPS | 吞吐量(MB/s) | 时延 |
---|---|---|---|
增强型 SSD | 最大随机 IOPS = 1800 + 存储容量(GB)× 50 且最大随机 IOPS 不超过50000 |
最大吞吐量 = 120 + 存储容量(GB)× 0.5 且最大吞吐量不超过350MB/s |
0.3 - 1ms |
SSD | 最大随机 IOPS = 1800 + 存储容量(GB)× 30 且最大随机 IOPS 不超过26000 |
最大吞吐量 = 120 + 存储容量(GB)× 0.2 且最大吞吐量不超过260MB/s |
0.5 - 3ms |
高性能 | 最大随机 IOPS = 1800 + 存储容量(GB)× 8 且最大随机 IOPS 不超过6000 |
最大吞吐量 = 100 + 存储容量(GB)× 0.15 且最大吞吐量不超过150MB/s |
0.8 - 4ms |
提示
- 推荐至少使用高性能磁盘(吞吐量 150MB/s 左右);如果交易量很小,可以考虑使用普通云磁盘;
重要
- 在运维监控时,也要多注意磁盘的 IO 指标;
- 如果使用云服务,或者平台服务,尽量使用云磁盘存放部署时生成的节点配置文件和区块链的数据文件(配置文件目录中的 data 和 log 目录),防止主机销毁而导致数据跟随系统磁盘丢失;