amazon-s3 - 当我同时上传少量小文件时,为什么 Amazon S3 会出现“503 减速”错误?
问题描述
我正在开发一个应用程序,允许用户同时将多达 10 个图像或文档文件上传到 S3。不幸的是,503 Slow Down
当我只上传几个小于 1.2 MB 的文件时,我得到了一个错误,我无法弄清楚原因。
我正在使用此处找到的 JavaScript:https ://hexdocs.pm/phoenix_live_view/uploads-external.html
let Uploaders = {}
Uploaders.S3 = function(entries, onViewError){
entries.forEach(entry => {
let formData = new FormData()
let {url, fields} = entry.meta
Object.entries(fields).forEach(([key, val]) => formData.append(key, val))
formData.append("file", entry.file)
let xhr = new XMLHttpRequest()
onViewError(() => xhr.abort())
xhr.onload = () => xhr.status === 204 || entry.error()
xhr.onerror = () => entry.error()
xhr.upload.addEventListener("progress", (event) => {
if(event.lengthComputable){
let percent = Math.round((event.loaded / event.total) * 100)
entry.progress(percent)
}
})
xhr.open("POST", url, true)
xhr.send(formData)
})
}
let liveSocket = new LiveSocket("/live", Socket, {
uploaders: Uploaders,
params: {_csrf_token: csrfToken}
})
此代码可以很好地上传一个,有时是两个或更多文件到 S3,但如果文件数量为 4 个或更多,通常会无法上传某些文件并出现 503 Slow down 错误。我以 5 MB 的块上传它们,这是 S3 允许的最小块大小,但是因为所有文件的大小都小于 5 MB,所以它们都应该在一个块中上传。我也将块超时更改为一分钟。
我还尝试在更近的区域创建一个新的 S3 存储桶并改用它,但问题仍然存在。我认为 S3 应该比这更有能力,所以我很沮丧从我的开发机器上传几个小文件失败。
任何帮助将不胜感激。
解决方案
推荐阅读
- c# - 如何创建在 Xamarin.iOS 可视化设计器中工作的 C# 枚举属性?
- javascript - 如何在动画中间添加文字?
- haskell - 将一种类型约束为另一种类型的模式
- python - 如何将 Dask 数据帧作为输入传递给 dask-ml 模型?
- python - 如何检查用户是否输入了有效值?如果输入正确,我如何将此值附加到列表中?
- java - 获取多个图像 url firebase 存储的列表
- ubuntu - GPU 英伟达不可用
- javascript - D3 Choropleth 地图 + 悬停工具提示 + 浏览器放置问题
- javascript - javascript - 从脚本中直接写入脚本标签的导入函数
- python - 迭代删除 linregress Pandas 的多个数据点