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. Vue 实现 登陆后打开主页面(登陆组件 + 主页面组件)

    本次演示,项目所需iview,router 首先 在 views 目录 新建 两个 组件 ( login.vue ,index.vue ) login.vue <template> < ...

  2. Newnode's NOI(P?)模拟赛 第二题 dp决策单调优化

    其实直接暴力O(n3)DP+O2O(n^3)DP+O_2O(n3)DP+O2​优化能过- CODE O(n3)O(n^3)O(n3) 先来个O(n3)O(n^3)O(n3)暴力DP(开了O2O_2O2 ...

  3. jquery实现input输入框点击加减数值随之变动

    <input class="addBtn min" type="button" value="-" /><input cl ...

  4. ESlint配置案例及如何配置

    1.中文官网: https://eslint.cn/ 2.先看一个写好的eslint规则: 3.下面再给一个例子 module.exports = { "parser": &quo ...

  5. 博弈dp入门 POJ - 1678 HDU - 4597

    本来博弈还没怎么搞懂,又和dp搞上了,哇,这真是冰火两重天,爽哉妙哉. 我自己的理解就是,博弈dp有点像对抗搜索的意思,但并不是对抗搜索,因为它是像博弈一样,大多数以当前的操作者来dp,光想是想不通的 ...

  6. eclipse打开项目中文件时左侧project explorer同时展开该文件的路径

    如图,点击Package Explorer面板上的双向箭头图标即可

  7. DelayQueue实现延迟队列

    public class Q { public static void main(String[] args) throws Exception { DelayQueue<Order> o ...

  8. LOJ #2731 [JOI2016春季合宿]Solitaire (DP、组合计数)

    题目链接 https://loj.ac/problem/2731 题解 首先一个很自然的思路是,设\(dp[i][j]\)表示选了前\(i\)列,第\(2\)行第\(i\)列的格子是第\(j\)个被填 ...

  9. HDU3844Mining Your Own Business

    目测某年HNOI,(其实这个题是2011年的WF,hdu上找到的,HNOI2012那个中文题在bzoj和loj上都有,叫矿场搭建,题意几乎一样,数据比较弱,交这份代码也能A). 先讲题解,然后说一些有 ...

  10. dubbo的实现原理

    dubbo的介绍 dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成. dubbo框架是基于Spring容器运 ...