PHP 高并发大图片上传怎么架构

2019-05-07 14:39:05 +08:00
 zhengwhizz

有个网站有时会涉及几百号人同时上传 2M 左右的图片好多张,这种情况下经常会丢失图片,怎么处理好呢?

6419 次点击
所在节点    PHP
50 条回复
shiny
2019-05-07 21:16:23 +08:00
云服务器流入的带宽不是没什么限制吗
opengps
2019-05-07 21:41:53 +08:00
如果是阿里云的话:
正常使用服务器的带宽上传,然后服务器内网传输给 OSS,然后引用地址返回 OSS 的公网地址。参考我的博客最后两段 https://www.opengps.cn/Blog/View.aspx?id=43&from=v2
king2014
2019-05-07 21:44:39 +08:00
10M 的带宽 8 核 16g 的机子,7 天有 3000 个人上传手机照片(手机照片不小 7,8M 有的),整个活动下来没有出现问题,可能并发没有我想的那么高的缘故吧
emeab
2019-05-07 21:45:13 +08:00
带宽问题吧. 4m 水管单传一个 2m 的图片都要 2 秒了 更别说同时了
king2014
2019-05-07 21:57:13 +08:00
每个人估算会传十几二十张甚至更多,每张图片 2M。。。这还怎么搞?
相当于一个人就要上传 20M-40M 的图片,再来个 100 并发岂不是瞬间上传 2G-4G 的图片,几百号人岂不是更多。。。
veike
2019-05-07 21:57:31 +08:00
@emeab 上传时间要看文件大小单位,服务器 4M 是 bit,文件是 byte,所以 2s 传不完。
opengps
2019-05-07 21:58:31 +08:00
22 楼补充:
对于传统机房的对等带宽,除了加带宽没别的办法。
对于国内各种云,带宽几乎全是只限制服务器出方向大小(入方向一般是 100M 或 200M 并且免费)。对象存储都是按流量收费,峰值带宽往往是 100M 起步
所以,这个问题可以用内网可打通的云服务器和对象存储搭配解决
veike
2019-05-07 22:05:17 +08:00
@opengps 上行真的有那么大吗?
yc8332
2019-05-07 22:08:14 +08:00
第三方存储服务搞起来。。。
KasuganoSoras
2019-05-07 22:11:57 +08:00
你要是只有 4M 宽带,就算你把程序优化成神仙也没用,速度还是只有 4M,就那个样
解决方法就是加宽带,或者用第三方储存服务
opengps
2019-05-07 22:15:59 +08:00
@veike 阿里云官网给出解释:按量付费的带宽上限是 100M,按固定带宽付费的上限是 200M
opengps
2019-05-07 22:19:23 +08:00
opengps
2019-05-07 22:20:34 +08:00
新找的图床好像不太好用,倒数第二个图片链接是官网文档截图
zhengwhizz
2019-05-07 22:46:28 +08:00
@opengps 你是说上传图片的时候带宽并不是 4M?? 而是 100-200M ?只是访问的时候是 4M ?
opengps
2019-05-07 22:49:29 +08:00
@zhengwhizz 是的。注意前提条件是:你用的是云服务器这种“非对等”带宽
zhengwhizz
2019-05-07 23:05:27 +08:00
@opengps 用的就是阿里,我也看了阿里的说明,这么说的话上传的瓶颈其实就是用户端这边了,但是这边只有他一人在传,假如同一时间有 10 个人在传,每人 6M,服务器处理 60M 的图片进行压缩 /打水印,是服务器运力不够了?服务器好像是 4 核 8G。
opengps
2019-05-07 23:20:53 +08:00
@zhengwhizz 你好像没 get 到我的点,我不是说你上传不够。
我是说你的上传之后的引用加载,占用了服务器的 4M 带宽,导致交互通讯时候有一个方向受阻了,可能在这个地方导致的其他人失败(上传过程也会需要一点下载流量的)
jugelizi
2019-05-07 23:40:34 +08:00
怎么看上去就是发包攻击了
mumbler
2019-05-07 23:45:51 +08:00
阿里云的 ECS 和 OSS 上行数据都是免费的,最高 1G 带宽,4M 只是下行带宽而已.
z5864703
2019-05-08 00:49:16 +08:00
应该就是像 37 楼所说,上传没问题,只是因为页面展示图片的时候把 4M 的出网带宽占满导致别的入网请求交互握手阻塞。
如果是这种,可以考虑把页面展示的使用缩略图,压缩出网带宽开销

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/561811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX