1,背景介绍

公司最近最近统一了存储环境,由ftp文件存储全量转换为ceph存储。有业务组表示以前往ftp文件批量上传30万个文件1.3GB只需要16分钟左右。切换为ceph存储需要1个多小时,也就是现在现有的速度只有369kb/s。询问能如何改进。

公司内部网络和存储环境进行了压力测试。
ceph 存储系统调研读写性能测试的报告如下

我们是采用s3的接口进行文件上传的,也就是对于上面的cephrgw的接口。大概在20MB/s的速度。

2,首先我使用java程序进行验证。

发现他发给我的数据集确实以很慢的速度进行上传。和普通的文件上传具有10倍的差距左右。在调整aws-java-s3的sdk的线程池的大小后。效果也是不明显的。我采用jconsole观察线程的使用情况

3,使用AWS CLI进行快速验证

AWS CLI采用python编写,具有较为完备的日志。
安装指南:https://docs.amazonaws.cn/cli/latest/userguide/install-windows.html
调整并发数量和配置日志:https://amazonaws-china.com/cn/blogs/china/amazon-s3-depth-of-practice-series-s3-cli-depth-parsing-and-performance-testing/
批量生成不同大小的文件我采用了Bandizip(7zip只支持1MB以上的分卷大小):http://www.bandisoft.com/bandizip/
并发请求数量和分片大小我设置为:
s3 =
max_concurrent_requests = 50
multipart_threshold = 10MB
multipart_chunksize = 6MB
上传命令:
aws s3 cp C:\app\qolfile\ s3://cu-ibas/oss/public --endpoint-url http://oss.ts-pfecs.epay --recursive
命令参数说明如下:
cp: 代表拷贝文件
C:\app\qolfile:本地的目录
s3://cu-ibas/oss/public:远端s3的地址,包含bucket名称和路径
--endpoint-url http://oss.ts-pfecs.epay:指定远程端点地址
--recursive :表示递归上传文件夹里面的文件

上传并将日志存储在文件中:
aws s3 cp C:\app\qolfile\ s3://cu-ibas/oss/public --endpoint-url http://oss.ts-pfecs.epay --recursive --debug >upload.txt 2>&1

upload.txt的文件部分内容摘要
2019-07-17 15:34:50,100 - ThreadPoolExecutor-1_2 - s3transfer.tasks - DEBUG - Executing task UploadSubmissionTask(transfer_id=2, {'transfer_future': <s3transfer.futures.transferfuture object="" at="" 0x0000026005c559e8="">}) with kwargs {'client': <botocore.client.s3 object="" at="" 0x0000026005b972b0="">, 'config': <s3transfer.manager.transferconfig object="" at="" 0x0000026005bf8e48="">, 'osutil': <s3transfer.utils.osutils object="" at="" 0x0000026005bf8eb8="">, 'request_executor': <s3transfer.futures.boundedexecutor object="" at="" 0x0000026005c43080="">, 'transfer_future': <s3transfer.futures.transferfuture object="" at="" 0x0000026005c559e8="">}
2019-07-17 15:34:50,101 - ThreadPoolExecutor-1_3 - s3transfer.tasks - DEBUG - UploadSubmissionTask(transfer_id=3, {'transfer_future': <s3transfer.futures.transferfuture object="" at="" 0x0000026005c6b128="">}) about to wait for the following futures []
2019-07-17 15:34:50,101 - ThreadPoolExecutor-1_3 - s3transfer.tasks - DEBUG - UploadSubmissionTask(transfer_id=3, {'transfer_future':
ThreadPoolExecutor带有49,50等信息就代表并发请求数生效了。然后我做了不同文件大小的测试速度情况:

分卷文件大小 观察的上传速度
1MB 1.5MB/s
500KB 800KB/s
10KB 390KB/s
1KB 100KB/s

这也就是说明了每个文件的大小对于文件上传速度是有影响的。如果每个文件的大小都大于1MB以上。在设置恰当的s3上传的带宽能够跑满。如果每个文件都小于1KB的情况下。上传速度会很慢的。

4,总结

先给出这个小文件数据集的情况下,没有办法提高上传速度。应用层可以采用边生成文件,边上传文件的模式来加快批量处理的速度。也就是采用生产者消费者模式。队列可以采用内存队列,可以采用redis的queue放置消费任务。

亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究的更多相关文章

  1. 在亚马逊amazon的AWS上安装Node和MongoDB服务器

    在亚马逊amazon的AWS上安装Node和MongoDB服务器 在建立AWS上账号.创建EC2 ,用putty链接上之后,就可以用下面的方法开始安装. !!! 如果不是是自己建立的EC2, 而是由B ...

  2. 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘

    本挖掘典型地运用了机器学习技术,例如聚类,分类,关联规则,和预测建模.这些技术揭示潜在内容中的意义和关系.文本发掘应用于诸如竞争情报,生命科学,客户呼声,媒体和出版,法律和税收,法律实施,情感分析和趋 ...

  3. 亚马逊云服务器AWS安装CentOS

    亚马逊云服务器默认创建的实例,在停止之后再启动的情况下,IP会发生改变.所以我们最好先创建一个弹性IP,即EIP,不过我也不清楚这个费用. 1.按如图操作创建一个弹性IP,弹性IP创建之后可以随便绑定 ...

  4. 亚马逊S3下载上传文件

    引用网址: http://www.jxtobo.com/27697.html 下载 CloudBerry Explorer http://www.cloudberrylab.com/download- ...

  5. 亚马逊云VPS AWS更改LINUX为ROOT权限密码登陆

    LINUX VPS没有ROOT权限是很难受的事,并且密码登陆也方便一些.首先用AWS证书验证的账户登录,1.修改ROOT密码sudo passwd root2.sudo chmod 777 /etc/ ...

  6. Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传

    背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...

  7. 亚马逊AWS业务副总裁:如何在基础设施上降成本

    腾讯科技 林靖东 11月17日编译 亚马逊Amazon Web Services业务的副总裁.著名工程师詹姆斯汉密尔顿(James Hamilton)在AWS re:Invent大会上解释了公司是如何 ...

  8. 国外物联网平台(1):亚马逊AWS IoT

    国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...

  9. 国外物联网平台初探(一) ——亚马逊AWS IoT

    平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AW ...

随机推荐

  1. 1024·程序员节来啦!MyEclipse致敬改变世界的程序猿

    1024·程序员狂欢季 MyEclipse/CodeMix — Java开发利器!现金红包免费领! 快拆开看你的最大优惠券是多少,幸运奖红包翻倍!   (活动期间在线下单的客户才可享受此优惠,过期恢复 ...

  2. 小程序开发之后台mybatis逆向工程(二)

    上一节搭建好了SSM后台框架,这一节将根据表结构创建实体及映射文件以及mapper接口.如果表过多,会很麻烦,所以mybatis提供了逆向工程来解决这个问题. 上一节 SSM搭建后台管理系统 逆向工程 ...

  3. C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】

    由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对 ...

  4. 用Python操作excel文档

    使用Python第三方库 这一节我们学习如何使用Python去操作Excel文档.如果大家有人不知道Excel的话,那么建议先学一学office办公基础.这里想要操作Excel,必须安装一个Pytho ...

  5. [CSP-S模拟测试]:序列(二分答案+树状数组)

    题目传送门(内部题98) 输入格式 第一行一个整数$n$,第二行$n$个整数$a_1\sim a_n$,第三行$n$个整数$b_1\sim b_n$. 输出格式 一行一个整数表示$\max(r-l+1 ...

  6. $\LaTeX$数学公式大全1

    $1\ Geek\ and\ Hebrew\ letters$$\alpha$ \alpha$\beta$ \beta$\chi$ \chi$\delta$ \delta$\epsilon$ \eps ...

  7. C++:#include和using namespace

    https://blog.csdn.net/u013719339/article/details/80221899

  8. Nginx-rtmp之监听端口的管理

    1. 概述 监听端口属于 server 虚拟主机,它是由 server{} 块下的 listen 配置项决定的. 每监听一个 TCP 端口,都将使用一个独立的 ngx_rtmp_conf_port_t ...

  9. VMware安装CentOS后无法无法识别网卡的解决方法

    请找到安装CentOS虚拟机的安装目录,找到.vmx后缀名的文件,点击鼠标右键选择用记事本打开,在文件的最后一行添加内容:ethernet0.virtualDev = "e1000" ...

  10. kernel hacking的一些网站

    很全面的网站,下面的网站基本都可以从该地址找到. 新手必备 subscrible/unsubscrible mail list mail list archive kernel git mainlin ...