1

我正在构建一个浏览器游戏,当玩家执行一些关键操作时,我有很多小文件需要在我的 EC2 实例和 S3 之间传输。

虽然传输单个大文件相当快,但传输多个小文件却非常慢。我正在使用亚马逊的 PHP SDK。

有没有办法克服 S3 中的这个弱点?谢谢。

4

4 回答 4

1

看起来结合以下两种解决方案是可行的方法。

http://improve.dk/archive/2011/11/07/pushing-the-limits-of-amazon-s3-upload-performance.aspx http://gearman.org/

于 2013-02-19T08:45:51.463 回答
0

如果必须从 EC2 实例到 S3 进行此传输,那么您可以尝试使用 s3fuse ,它基本上会将您的 s3 驱动器安装到 EC2 实例的存储卷上。

于 2013-02-14T15:24:10.443 回答
0

S3 的性能不是恒定的,有时会很慢。如果您需要共享对象的实时性能,我会看看 AWS memcached 服务,尽管我没有使用它。

于 2013-02-16T02:32:37.893 回答
0

你究竟是如何上传文件的?SDK中有多线程方法吗?我问是因为我必须实现自己的方法来比 SDK 更快地下载东西。

您需要立即阅读这些文件吗?你每秒有多少事件,你需要订购它们吗?

我的第一个想法是创建一个本地缓冲区,每隔一段时间上传一次批次。

然后,如果这太慢了,我会先将它们存储在一个快速缓冲区中,而不是 S3,然后每隔一段时间刷新一次。我的选择是简单的东西,比如 SQS 或 Redis。SQS 理论上对于随机队列具有无限吞吐量,对于 FIFO 队列具有每秒 300 批(1 批 = 1..10 条消息 = 0..256kb)的吞吐量 - 您可以进一步增加。

然后你就有了流、Lambda 等等。

于 2019-08-30T14:53:35.240 回答