IPFS系列04-IPFS 存储性能测试

这篇具有很好参考价值的文章主要介绍了IPFS系列04-IPFS 存储性能测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文是对 IPFS 存储性能测试的一个报告。

Note: 本次测试使用的都是单台服务器,主要测试 IPFS 读写性能,以及哪些因素会影响 IPFS 的存储效率。
统计方式:每组操作执行5次,然后取平均值

1. 本地测试

考虑到硬件对存储性能的影响,我们这里分别使用了两台不同配置的台式机进行了测试。

配置一

  • CPU: i5-4160-4Core 主频 3.2G
  • 内存: 8GB
  • 硬盘:普通家用硬盘 1GB
  • 操作系统:Ubuntu 18.04-LTS

测试结果

网络环境 文件大小 写入时间(ms) 读取时间(ms) 写入速度(MB/s) 读取速度(MB/s)
本地 1G 103584.98 41718.92 9.97 24.25
本地 500M 45045.54 7469.16 11.11 66.66
本地 100M 8981.92 1162.43 11.22 86.20
本地 50M 4022.22 577.39 12.43 86.65
本地 10M 1775.41 252.60 5.64 39.68
本地 5M 1165.52 186.50 4.54 27.77
本地 1M 530.57 151.1872 1.88 6.66

配置二

  • CPU: i7-8700K CPU @ 3.70GHz
  • 内存: 16GB
  • 硬盘: 希捷企业硬盘 8TB
  • 操作系统:Ubuntu 18.04-LTS
网络环境 文件大小 写入时间(ms) 读取时间(ms) 写入速度(MB/s) 读取速度(MB/s)
本地 1G 37819.67 2237.9 27.08 459.19
本地 500M 16841.98 1085.08 29.76 462.96
本地 100M 3006.19 266.68 32.67 384.61
本地 50M 2496.54 143.81 20.08 357.14
本地 10M 1156.53 47.92 8.69 212.76
本地 5M 583.78 52.28 8.62 58.13
本地 1M 204.68 37.77 5 27.02

本地测试原始数据 (单位:mses)

# i5 CPU
Write:
1G: 97389.72878, 100163.63883, 102394.04202, 121107.44262, 96870.09001
500M 46019.42205, 43743.31760, 45353.94692, 45235.54754, 44875.50592
100M 8350.12960, 8919.12270, 8405.61080, 9136.59215, 10098.17624
50M 3909.33299, 3994.80295, 4111.20057, 4065.45925, 4030.31278
10M 1789.08062, 1746.42110, 1776.58439, 1807.98721, 1756.99902
5M 1187.28948, 1139.60743, 1186.48696, 1171.19718, 1143.03637
1M 544.82102, 512.79807, 485.28814, 553.72643, 556.23889

Read:
1G: 39059.96132, 42852.09465, 40929.29006, 41882.52759, 43870.74089
500M 7555.64952, 8230.87454, 7912.68301, 6132.61437, 7514.02307
100M 858.94799, 1568.71152, 1702.42906, 873.50821, 808.59113
50M 447.64829, 781.59356, 776.32689, 451.41816, 430.00174
10M 203.68147, 295.31884, 368.38579, 200.71745, 194.91434
5M 165.23266, 217.01288, 220.20507, 170.92180, 159.16085
1M 167.58633, 167.72866, 166.81981, 119.10820, 134.69315

本地使用的是我是直接使用 IPFS 自带的客户端命令行工具进行测试的,通过 shell 脚本进行批量测试,值得一提的是,可能 shell 脚本的运行时间统计可能有些许不是
特别精确,但是我们这个测试本身也是比较粗略的定性测试,所以这个不影响结果。

下面我贴出我的测试脚本,有兴趣的同学可以自己运行测试一下:

#!/bin/bash

timer() {
	timeStamp=`date +%s.%N`
	echo $timeStamp
}

dir="/home/yangjian/downloads"
datas=(
	"$dir/data-1GB.zip"
	"$dir/data-500MB.zip"
	"$dir/data-100MB.zip"
	"$dir/data-50MB.zip"
	"$dir/data-10MB.zip"
	"$dir/data-5MB.zip"
	"$dir/data-1MB.zip"
)

rm Qm*
start=$(timer)

for file in ${datas[@]}
do
	echo -e "\033[35m\033[1m+++++++++++++++ Test for file $file +++++++++++++++\033[0m"
	# put files
	t1=$(timer)
	r=$(ipfs add $file)
	t2=$(timer)

	cost=`awk 'BEGIN{printf "%.5f\n",(('$t2'-'$t1')*1000)}'`
	filename=`echo $r | awk '{print $2}'`
	echo -e "\033[32m\033[1mPut file successfully, hash: $filename, cost: $cost msecs.\033[0m"

	# get files
	t1=$(timer)
	ipfs get $filename
	t2=$(timer)

	cost=`awk 'BEGIN{printf "%.5f\n",(('$t2'-'$t1')*1000)}'`
	echo -e "\033[32m\033[1mGet file successfully,  cost: $cost msecs.\033[0m"
done

end=$(timer)
cost=`awk 'BEGIN{printf "%.5f\n",(('$end'-'$start')*1000)}'`
echo -e "\033[34m\033[1mTotal cost: $cost msecs.\033[0m"

exit 0

Note: 这里需要注意的是,IPFS 的存储是去重的,也就是说,相同的文件,第一次存储是最慢的,之后如果你再存储相同的文件,它会非常快。
我们这里都是取第一次的存储所耗费的时间。如果你要像我一样通过多次测试取平均值的话,你每测试完一次之后需要重新初始化 IPFS 节点,
这样测试虽然挺繁琐的,但是结果比较精确。

初始化的方法很简单:

rm -rf ~/.ipfs
ipfs init
ipfs daemon

下图是本人实测的运行截图:

ipfs 存储很慢,深入浅出 IPFS,区块链,linux,运维

2. 局域网测试

机器配置

  • CPU: i7-8700K CPU @ 3.70GHz
  • 内存: 16GB
  • 硬盘: 希捷企业硬盘 8TB
  • 操作系统:Ubuntu 18.04-LTS

测试结果

网络环境 文件大小 写入时间(ms) 读取时间(ms) 写入速度(MB/s) 读取速度(MB/s)
局域网 1G 41630.6 9640.5 24.59 106.22
局域网 500M 19016.4 4677.8 26.29 107.06
局域网 100M 3365.6 1016.8 29.76 94.33
局域网 50M 2073.6 489 24.15 102.24
局域网 10M 854.2 123 11.76 83.33
局域网 5M 396 72.8 12.82 69.44
局域网 1M 136.6 34.8 7.35 29.41

局域网测试原始数据 (单位:msec)

Write:
1G 40780, 41130, 41226, 43040, 41977
500MB 18280, 19613, 18984, 18799, 19406
100MB 3207, 3518, 3129, 3551, 3423
50MB 1862, 1989, 2072, 2182, 2263
10MB 864, 860, 759, 895, 893
5MB 404, 392, 414, 369, 401
1MB 119, 171, 110, 176, 107

Read:
1G 9675, 9755, 9590, 9542,9557
500MB 4674, 4670, 4667, 4677, 4701
100MB 1018, 1018, 1019, 1012, 1017
50MB 481, 503, 488, 491, 482
10MB 122, 126, 126, 122, 119
5MB 73, 71, 72, 74, 74
1MB 36, 33, 35, 36, 34

下面同样贴出本人的实测截图:

ipfs 存储很慢,深入浅出 IPFS,区块链,linux,运维

从本地测试和局域网测试数据可以看出一些问题:

  1. 高配置的 CPU 和 硬盘能够明显提升 IPFS 的存储性能,估计是 IPFS 在分片的时候,更好的 CPU 能更快速地创建分片。
  2. 在进行小文件(10M 以下)存储时,发现局域网速度比还是稍微快一些,这个是因为二者使用的是不同的客户端,本地使用的是 IPFS 自带的 ipfs 客户端。
    局域网使用的是 ipfs-http-client 工具。还有就是局域网测试的时候我没有算把文件转为字节流的时间,以及连接服务端的时间。
  3. 文件越小,绝对的存储速度越慢,这是因为存储的边际效应递减的缘故,因为文件太小的时候,一些初始化以及网络连接的时间占比就大大增加了。

3. 公网测试

公网本人使用的是阿里云主机进行测试的。这次测试的工具是自己写的 IPFS php client 工具,为什么不继续使用 IPFS nodejs client
一个原因是因为本人擅长 PHP 语言,另一个原因是下面要跟七牛云做对比,尽量做到单一变量原则。

机器配置

  • CPU: Intel® Xeon® Platinum 8163 CPU @ 2.50GHz 双核
  • RAM: 8GB
  • 硬盘: 普通云盘,80GB
  • 带宽: 2MB
  • 操作系统: Ubuntu 16.04.4 LTS

公网测试结果

网络环境 文件大小 上传时间(s) 上传速度(MB/s)
gamma云 1G 263.59 3.88
gamma云 500M 125.95 3.96
gamma云 100M 25.34 3.94
gamma云 50M 10.55 4.73
gamma云 10M 0.95 10.52
gamma云 5M 0.26 19.23
gamma云 1M 0.11 9.09

公网测试原始数据 (单位:sec)下表列出了 5 次文件上传的实际耗时。

文件大小 1 2 3 4 5
1G 268.32 261.71 266.63 262.56 258.74
500MB 129.14 125.61 125.68 123.97 125.38
100MB 24.18 24.54 24.68 28.70 24.60
50MB 11.11 10.29 10.56 10.31 10.49
10MB 0.95 0.95 0.98 0.94 0.94
5MB 0.27 0.23 0.26 0.28 0.26
1MB 0.11 0.14 0.11 0.12 0.10

4. 与七牛云对比测试

上面我们测试了 IPFS 在各种网络条件下的单节点存储的绝对性能,看起来还不错,但是毕竟 IPFS 是一个新的分布式文件系统,不确定是否能够满足商用需求,提供稳定的
云存储服务。接下来我分别使用同样的数据测试了七牛云的企业存储服务的性能。看看 IPFS 的单节点跟七牛云的存储服务性能对比是否存在比较大的差距。

我使用七牛云官方的 php sdk 作为测试工具,分别测试了 1GB,500MB,100MB,50MB,10MB,5MB,1MB 文件的上传和下载,测试结果如下:

七牛云测试结果

网络环境 文件大小 上传时间(s) 上传速度(MB/s)
七牛云 1G 264.08 3.87
七牛云 500M 129.43 3.87
七牛云 100M 25.65 3.89
七牛云 50M 10.71 4.66
七牛云 10M 1.55 6.45
七牛云 5M 0.88 5.68
七牛云 1M 0.25 4.00

从测试数据可以看出,上传速度稳定在 5MB 左右,我本地的上传带宽是 50MB 的,
所以这个上传速度应该没有受到本地上传带宽的影响,也就是说是服务端的性能没有受到压制,数据没有问题。

七牛云测试原始数据(单位:sec)下表列出了 5 次文件上传的实际耗时。

文件大小 1 2 3 4 5
1G 262.94 262.45 268.50 261.31 265.21
500MB 148.29 124.73 123.31 122.87 127.99
100MB 25.12 25.60 26.71 25.41 25.44
50MB 10.65 10.76 10.57 10.56 11.05
10MB 1.64 1.63 1.64 1.47 1.40
5MB 0.83 0.89 0.83 0.87 1.00
1MB 0.25 0.24 0.26 0.26 0.26

Node: 七牛云和 IPFS 的下载都是通过 http 网关提供服务,所以下载速度就完全只跟下载带宽有关了,本人阿里云服务器带宽只有 2MB,
所以下载的最大速度只有 220KB/s,要远远低于七牛云的下载速度(12MB/s),所以这个下载速度不具备可比性。

5. 总结

通过测试我们可以发现,对于本地存储和局域网存储,IPFS 的存储性能略低于拷贝,这是由于 IPFS 需要对文件进行分片存储。

对于线上的环境,带宽成为了上传速度的最大瓶颈了,但是 IPFS 的性能表现依然不差,对于 100MB 以下的小文件,IPFS 的表现甚至要比七牛云
更优。考虑到七牛云的硬件配置应该比我们的高的多,所以如果把 IPFS 作为一个分布式云存储工具,根据本人测试的结果来看,性能上应该不比七牛云差。

那如果我们在进一步考虑到由于 IPFS 本身的各种优势以及特点,IPFS 节点是自带 CDN 加速的,也就是说节点越多,IPFS 的存储系统的读取效率将会更高。
而且同一个文件在第二次存储的时候,IPFS 只需要判断其哈希值就可以了,不需要再次分片以及存储工作,所以存储会非常快。因此我们有充分的
理由相信,使用 IPFS 做分布式云存储,将大有可为。

本文首发于 小一辈无产阶级码农文章来源地址https://www.toymoban.com/news/detail-817907.html

到了这里,关于IPFS系列04-IPFS 存储性能测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IPFS系列03-搭建 IPFS 私有网络

    本文讲述如何使用 IPFS 搭建自己的私有存储网络,如果你对 IPFS 还了解的话,建议你先看看下面两篇文章 IPFS系列01-IPFS 前世今生 IPFS系列02-IPFS 与 web3.0 有两种安装方式,一种是 clone 源码 编译安装(前提是你已经安装了 Go 语言的运行环境): 项目源码依赖较多,编译需要一

    2024年02月02日
    浏览(33)
  • 【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

    通过 ipfs init 在本地计算机建立一个 IPFS 节点 本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准 执行ipfs init初始化节点之后,会生成一个.ipfs的文件夹,用于存储相关的信息,比如节点ID、环境配置信息、数据存储等 如果使用

    2024年02月07日
    浏览(26)
  • 为什么需要分布式存储技术?IPFS价值在哪?

    IPFS中文翻译是星际文件系统,是硬盘共享的互联网底层协议,主要用于访问数据。简单来说,IPFS可以创建一个存储网络,让更多的人在分享闲置存储空间的同时获得收入。 这种人人都可以参与共享硬盘的存储模式,称为分布式存储。为什么我们需要这种分布式存储技术?要

    2024年02月13日
    浏览(42)
  • 使用 4EVERLAND 将您的 Damus 配置文件存储到 IPFS/Arweave

    挑战Twitter的去中心化社交应用Damus已登陆App Store。它是第一个使用名为Nostr的开放式去中心化社交网络协议的移动应用程序,该协议由 Twitter 联合创始人 Jack Dorsey 资助,该协议基于加密密钥对。 Damus 的出现是去中心化社交网络的另一个实验。该应用程序的承诺是一个开放的社

    2024年01月22日
    浏览(34)
  • 如何制作千人千面的NFT?如何存储NFT?#Crystals #nft.storage #ipfs

    Mixlab NFT 有哪些  应用可能 ?社区最近有哪些好玩的 NFT 项目 ? 知识库 NFT  门票 /NFT 证书 /NFT 杂志 ; 穿戴式 NFT/  生成式 NFT; 时尚 NFT/ 教育 NFT/ 文旅  NFT ...... 结课证书NFT -  斯坦福加密货币与区块链技术课 时代杂志 NFT 生成式 NFT -  Art Block 时尚 NFT -  AMBUSH的元宇宙空间

    2023年04月08日
    浏览(25)
  • IPFS入门操作教程(一):下载并安装IPFS

    IPFS入门操作教程(一):下载并安装IPFS 通过本教程的学习,你将学会: 在你的操作系统上下载并安装IPFS 查看你正在使用的IPFS版本 查看ipfs命令清单 IPFS的中文名是星际文件系统(InterPlanetary File System,缩写IPFS),是一个旨在创建持久且分布式存储和共享文件的网络传输协议。

    2023年04月09日
    浏览(30)
  • 【区块链 | IPFS】IPFS cluster私有网络集群搭建

    对于联盟链的业务中搭建一个私有网络的 IPFS 集群还是很有必要的,私有网络集群允许 IPFS 节点只连接到拥有共享密钥的其他对等节点,网络中的节点不响应来自网络外节点的通信。 IPFS-Cluster 是一个独立的应用程序和一个 CLI 客户端,它跨一组 IPFS 守护进程分配、复制和跟踪

    2024年02月08日
    浏览(25)
  • IPFS探究

    IPFS(星际文件系统)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Ben

    2024年02月01日
    浏览(12)
  • IPFS_私网搭建

    1.1 下载go安装包 ​ 打开 链接 选择并下载合适的安装包 1.2 解压安装包 将go安装包解压至 /usr/local/ 目录下 tar -zxvf go1.18.2.linux-amd64.tar.gz -C /usr/local/ 1.3 添加环境变量 1 在控制台键进入 vim /etc/profile 2 在最后一行添加 3 键入 source/etc/profile 4 键入 go -version查看go的版本,控制台正常

    2024年01月25日
    浏览(21)
  • IPFS搭建私有网络

    (87条消息) IPFS -- 节点搭建_躺在家里不干活的博客-CSDN博客_ipfs节点搭建 下载地址 https://gitee.com/wang_ya_nan/go-ipfs/releases 下载成功 安装成功 初始化成功! 启动成功! 经过上一步,我们已经可以在本地机器上通过API的方式上传文件了,但是如果要通过互联网访问,还需要配置

    2024年01月19日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包