[为 1Mbps 正名] 单日 15 万 PV 证明 1Mbps 对小网站来说完全够用

2019-10-23 04:24:53 +08:00
 eason1874
一个网站,每天约 6 万 IP,15 万 PV,每 PV 包括 favicon.ico 在内约 10 个请求,每 PV 所有资源 Gzip 压缩后加在一起约 30KB~50KB (专门优化过页面资源)。

偶尔流量上升,所以常备 1~3 台 5M 机器以防万一,静态资源也放到了 CDN。但我还是有带宽焦虑症,因为 1M 算下来 125KB/s,一个页面 10KB 也就支持 10 个页面并发,5M 也就支持 50 个页面并发。这个网站就是普通网站,流量集中在上午、下午、晚上三个时间点,一百几十个人同时在线很常见。

平时我看控制台服务器监控的外网出入带宽总在 10KB/s 左右,高峰也很少超过 20KB/s,总怀疑是不是监控不准。

今天(现在凌晨,应该说是昨天了),我发现腾讯云副网卡绑定的弹性公网 IP 可以按流量计费,服务器主网卡带宽只有 1Mbps,副网卡申请的按流量计费的弹性公网 IP 最高却可以调到 200Mbps。

于是我手痒了,开了个 20Mbps 的 IP 绑定到副网卡来代替 CDN 工作,测试一天带宽峰值。这个是按量计费我相信统计肯定不会错。同时在云监控设置了告警,条件是一分钟内出带宽超过 1Mbps 就告警,结果一整天什么都没收到。

刚上后台看了看统计,平均峰值在 35KB/s,最高峰不到 80KB/s,一小时最多跑约 140M 流量,一天请求总共 50 万多点。账单计费已经经过精度调整了,肯定没错了。

依据这个数据来看,其实 1Mbps 带宽的 125KB/s 速率就已经可以满足单日 15 万 30KB~50KB 的 PV,甚至有很多富裕。

这个网站页面资源是比较少的,一个页面资源总量相当于常见网页 HTML 大小,但一般网站也会把静态资源放到 CDN,这样算下来常见网页也是 30KB~50KB / PV。

比如 V 站首页 15KB,回复比较多的帖子 30KB,按 30KB 来算,粗略估计 1Mbps 可以满足 V 站用户每天摸鱼看帖 20 万~30 万次。

所以说,正经做网站 1Mbps 不算小水管了,多数情况下这个量级的 PV 访问还没把带宽占满 MySQL 之类的进程就先宕机了,我也是把页面静态化才能在 1 核 1G 的机器上扛得住 10 万 PV,不然 MySQL 进程一天至少被挤掉一次。
20772 次点击
所在节点    云计算
167 条回复
eason1874
2019-10-24 05:16:41 +08:00
@lscho #115 50 万 PV 有没有问题我不知道啊,我没试过。要是以前我会觉得 1Mbps 跑不了 50 万 PV,现在我觉得可能可以。我这帖子就是发给像我这种不确定 1Mbps 能跑多少 PV 的人看的。

@046569 #117 我说的方法跟 Asset Pipeline 有很大区别,Asset Pipeline 再怎么压缩你的资源还是走公网带宽啊,我说的通过内网主动推到对象存储由 CDN 提供访问,这是不占用公网带宽的,内网带宽往往远大于公网带宽推送极快,CDN 访问也几乎不限速。我通过这个方法可以只用 1M 服务器带宽给用户提供超过 10M/s 的下载速度,而 Asset Pipeline 再怎么压缩给用户的访问速度也不会超过服务器 1M 带宽的 125KB/s。

我觉得你们抨击的点完全没有现实意义,就算服务器有 100M 带宽也可以用你们的观点抨击,因为静态资源这东西不同网站差别很大,你们拿普通网站每 PV 全部资源有 1~2MB 来举例,那我也可以拿视频网站动辄每 PV 要加载 10~100MB 来举例啊,甚至可以拿下载站一个下载 PV 得花费几百 MB 到几个 GB 来说,这样反驳的话,一个特定的服务器带宽到底能支持多少 PV 这个问题还能有讨论意义吗?

我的帖子里就强调了按每 PV 30~50KB 来算 1Mbps 能支持多少 PV,我说经过我自己的网站亲测一天 15 万 PV 都只用了 1Mbps 一半多,还有很多富裕。我设定了前置条件,你们却把我前置条件拿走然后再质疑我,你们不觉得很奇怪吗?

我今天就得罪你们一下。借用知乎上名言回复你们这个质问:脱离剂量谈毒性是耍流氓。
eason1874
2019-10-24 05:21:19 +08:00
@XxxxD #118 会有人眼红。DDOS 倒不怕,DDOS 也是有成本的,他们不可能一直 DDOS 我,最多损失一段时间的收入。

我主要是怕有人用刷流量的软件点我广告,我百度联盟和 Adsense 都是被网上吃饱没事干的人刷到封号的,至今没有解封,只能用别人账户。
myqoo
2019-10-24 09:39:50 +08:00
@eason1874 1Mbps 的服务器 DDOS 根本没有成本啊,用几百 KB/s 的家庭宽带加 hping3 命令就足够 ping 死了
eason1874
2019-10-24 10:10:36 +08:00
@myqoo #123 被攻击了只靠服务器不行,我的预案就两个:一、关掉公网 IP,网页更新从内网推给对象存储,由 CDN 或者百度云加速 /Cloudflare 提供访问;二、关掉网站一段时间。
myqoo
2019-10-24 10:13:34 +08:00
@eason1874 网页更新从内网推给对象存储?这是纯静态的网站吗
eason1874
2019-10-24 10:33:29 +08:00
@myqoo #125 可以这么说,没有用户交互功能,一些动态内容纯粹是为了配合运营,去掉的后果也就是转化率降低,对用户没影响,实在没办法不用也行。

我为了防止服务器被黑而自己不知道,前段时间在云函数搞了个 DDNS,检测到服务器挂了或者返回内容不对云函数就会自动把解析改成备用的 CDN,CDN 后面是定期备份,常备有几百 GB 流量包,也设置了 QPS 限制。我一个网页才 30KB,1000 万 PV 才 300G,短时间高流量一点不慌。

刚打字回复你突然想到,我还可以再开一个云函数拉 CDN 日志,把短时间高频请求 IP 抓出来,加到 CDN 黑名单,这样感觉就稳上加稳了。(不过应该也用不上,现在几台容灾服务器都一直空闲,别乱发网址拉仇恨一直都稳)
id4alex
2019-10-24 10:35:48 +08:00
CDN 一个月多少流量啊
myqoo
2019-10-24 10:40:56 +08:00
@eason1874 没有用户交互功能,其实放 github pages 都可以,网页头部加个 <base href="https://jsdelivr.com/...">

除了首页走海外稍慢,资源全走免费 CDN 岂不美滋滋~
janxin
2019-10-24 10:41:20 +08:00
LZ 你应该把 CDN 的费用算进来一起比较...
arraysnow
2019-10-24 10:43:28 +08:00
lz 是依靠内网推到 cdn,由 cdn 承担带宽吗?但如果 cc 攻击了有什么好办法吗
eason1874
2019-10-24 10:47:57 +08:00
@id4alex #127 网页静态资源的话,每月 30G 左右,费用折合人民币~3 元。

@janxin #129 CDN 费用取决于静态资源大小啊,不同网站差异太大了。比如我的网页特别小,全部资源加起来才 30~50KB,很多网站一个 JS 文件就超过我整个网页了,怎么比~
eason1874
2019-10-24 10:54:55 +08:00
@myqoo #128 Github Pages 不能自动镜像吧?我记得只能主动推送。我现在日常备份在对象存储,服务器宕机切换到事先配置好的 CDN 或者 Cloudflare 就行了,不用再另外推送文件,如果用 Github Pages 还得推送。

免费 CDN 公共库用不上,因为我 JS/CSS 全部自己写的,哈哈哈,曾经为了省流量通宵把 CSS 梳理一遍,压榨到了极点。
eason1874
2019-10-24 10:58:00 +08:00
@arraysnow #130 是服务器内网推送对象存储,而对象存储作为 CDN 的源。我只测试过了可用性,目前作为灾备方案,没有实际使用。被 CC 的话,资源体积小走 CDN,体积大只能走免费的百度云加速 /Cloudflare 了吧,要不然钱包扛不住。
myqoo
2019-10-24 11:00:31 +08:00
@eason1874 换成 github 就不用“日常备份在对象存储”,直接备份到 github 上不就好了~
eason1874
2019-10-24 11:13:46 +08:00
@myqoo #134 你这么一说,确实可以拿 Github 做冷备。正好 Github 和 Cloudflare 搭配,对象存储和 CDN 搭配,一个免费一个付费,一个冷备一个热备。

对象存储相比较 Github 优势是可以内网推送,速度够快,可以热备。不过热备也不能代替隔离冷备,万一服务器被黑,热备也跟着凉凉。
ShadowSaint
2019-10-24 11:26:39 +08:00
@eason1874 你要是这么搞的话 1Mbps 没有意义啊,你基本全静态的话,去 CF 做个全站缓存,你服务器关了都没事,可是正常的网站不是这样的啊,你 15 万 PV 基本都走了 CDN,和 15 万 PV 都回源了这是俩概念
okwork
2019-10-24 11:26:57 +08:00
@eason1874 被攻击的时间段,可以临时配置下全站加速,让 cdn 帮你抗攻击。成本比自己买高防便宜
eason1874
2019-10-24 11:27:49 +08:00
@ShadowSaint #136 你也误解了。15 万网页 PV 是走服务器的,IP 直连,静态资源才走 CDN。
jdgui
2019-10-24 11:28:36 +08:00
感谢楼主分享,学习到很多知识, 以后可以拿出去吹牛逼了
jdgui
2019-10-24 11:29:33 +08:00
我的腾讯云学生机到 2025 年的,现在买了一年多一直在吃灰,前几天挂上了个挖矿软件,算了下一天才两分钱,唉。

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

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

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

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

© 2021 V2EX