将文件上传到AWS S3需要大量CPU

克莱弗森·施密特(Cleverson Schmidt)

我目前正在使用服务器应用程序(JEE),在将文件上传到AWS S3时遇到一些问题。我正在使用Java SDK(S3client.putObject)上传这些文件。服务器启动时,一切都会按预期进行。文件在服务器(EC2实例)中生成,并在几秒钟内上传到S3。但是几天后,性能会大大降低。通常需要5到6秒钟才能上传的文件现在需要10到30分钟(是的,几分钟)。我对应用程序进行了概要分析,罪魁祸首是使用AWS Java SDK进行上传的部分。奇怪的是,CPU利用率接近100%,并停留了几分钟。因为这基本上是一个IO操作,所以我不明白为什么它可能需要这么多的CPU循环才能运行。有谁前夕经历过这种行为?有关在哪里寻找的任何提示?

PS:文件大小从1到50 MB。

非常感谢!

更新:创建文件并将其上传到S3的EC2实例为m1.large。我正在使用1.6.4 AWS SDK版本。

杰森·富勒格

我想不出任何原因导致SDK代码会使您的CPU变得如此高。我的第一个猜测是某种垃圾回收问题。上传数据时,您是将File对象传递给AmazonS3.putObject还是某种流(包括FileInputStream)?流可能会有些棘手,因为不能保证流是可重复的,并且您必须在上载时在ObjectMetadata中显式提供Content-Length,作为上载的一部分,否则SDK必须将上载缓冲在内存中以进行计算总长度。这是我建议退房的第一件事。

另外,您应该在SDK中签出TransferManager API它为您提供了一个很好的简单界面,用于将文件上传到Amazon S3和从Amazon S3下载文件,并且内置了多项优化功能。

如果仍然没有找到线索,那么我建议为此做一个简单的复制实例。编写一个类文件,该文件简单地将一个随机文件上传到相同的S3密钥,并使该文件与应用程序代码的运行时间相同。如果您能够通过这种简单的设置重现该问题,那么我们可以看一下代码并帮助对其进行调试,但是在完整的应用程序代码中涉及所有其他变量的情况下,我们只能做很多事情猜猜可能会发生什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django:将CSV文件上传到AWS S3

来自分类Dev

将本地文件上传到amazon aws s3时如何获取本地文件?

来自分类Dev

NodeJs 将文件上传到 AWS S3 - 文件损坏

来自分类Dev

使用预签名URL将mp3 / zip文件上传到AWS S3

来自分类Dev

将数据库文件从ios上传到AWS s3问题

来自分类Dev

AWS PHP SDK将文件上传到S3导致错误

来自分类Dev

使用AWS4 Auth通过bash将文件上传到s3?

来自分类Dev

Amazon S3 AWS将图像上传到文件夹

来自分类Dev

使用Skipper将Sails.js文件上传到AWS S3

来自分类Dev

使用Python urllib2将zip文件直接上传到AWS S3

来自分类Dev

AWS将文件从客户端上传到S3

来自分类Dev

如何使用Ansible递归将文件夹上传到AWS S3

来自分类Dev

使用Java AWS SDK将文件夹上传到S3存储桶

来自分类Dev

使用NodeJS将ffmpeg文件输出上传到AWS s3

来自分类Dev

如何使用Java将文件夹上传到AWS S3?

来自分类Dev

php laravel直接将文件上传到AWS S3存储桶

来自分类Dev

将文件上传到AWS S3并授予公共访问权限

来自分类Dev

将文件从AWS Lambda(Python)中的多部分/表单数据上传到S3

来自分类Dev

AWS仅使用ID和密钥将文件上传到S3服务器

来自分类Dev

AWS Ruby SDK核心:将文件上传到S3

来自分类Dev

AWS PHP SDK将文件上传到S3导致错误

来自分类Dev

如何使用Ansible递归将文件夹上传到AWS S3

来自分类Dev

使用 Ruby 将文件上传到 S3 时出现 Aws::Errors::MissingRegionError

来自分类Dev

使用 AWS SDK ASP.NET 将文件上传到 S3

来自分类Dev

通过 Angular 将文件上传到 AWS S3 时的加载指示器

来自分类Dev

通过使用分段上传API将小于5 MB的文件上传到AWS S3存储桶

来自分类Dev

文件上传到AWS S3 Laravel 5.1

来自分类Dev

将网址图片上传到S3 AWS

来自分类Dev

将 JSON 文件从 node.js 中的 aws-sdk 上传到 aws s3 存储桶

Related 相关文章

  1. 1

    Django:将CSV文件上传到AWS S3

  2. 2

    将本地文件上传到amazon aws s3时如何获取本地文件?

  3. 3

    NodeJs 将文件上传到 AWS S3 - 文件损坏

  4. 4

    使用预签名URL将mp3 / zip文件上传到AWS S3

  5. 5

    将数据库文件从ios上传到AWS s3问题

  6. 6

    AWS PHP SDK将文件上传到S3导致错误

  7. 7

    使用AWS4 Auth通过bash将文件上传到s3?

  8. 8

    Amazon S3 AWS将图像上传到文件夹

  9. 9

    使用Skipper将Sails.js文件上传到AWS S3

  10. 10

    使用Python urllib2将zip文件直接上传到AWS S3

  11. 11

    AWS将文件从客户端上传到S3

  12. 12

    如何使用Ansible递归将文件夹上传到AWS S3

  13. 13

    使用Java AWS SDK将文件夹上传到S3存储桶

  14. 14

    使用NodeJS将ffmpeg文件输出上传到AWS s3

  15. 15

    如何使用Java将文件夹上传到AWS S3?

  16. 16

    php laravel直接将文件上传到AWS S3存储桶

  17. 17

    将文件上传到AWS S3并授予公共访问权限

  18. 18

    将文件从AWS Lambda(Python)中的多部分/表单数据上传到S3

  19. 19

    AWS仅使用ID和密钥将文件上传到S3服务器

  20. 20

    AWS Ruby SDK核心:将文件上传到S3

  21. 21

    AWS PHP SDK将文件上传到S3导致错误

  22. 22

    如何使用Ansible递归将文件夹上传到AWS S3

  23. 23

    使用 Ruby 将文件上传到 S3 时出现 Aws::Errors::MissingRegionError

  24. 24

    使用 AWS SDK ASP.NET 将文件上传到 S3

  25. 25

    通过 Angular 将文件上传到 AWS S3 时的加载指示器

  26. 26

    通过使用分段上传API将小于5 MB的文件上传到AWS S3存储桶

  27. 27

    文件上传到AWS S3 Laravel 5.1

  28. 28

    将网址图片上传到S3 AWS

  29. 29

    将 JSON 文件从 node.js 中的 aws-sdk 上传到 aws s3 存储桶

热门标签

归档