[为 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 进程一天至少被挤掉一次。
20392 次点击
所在节点    云计算
167 条回复
eason1874
2019-10-24 11:29:57 +08:00
@okwork #137 我也是这个想法,普通攻击让 CDN 扛一下。目前网页域名是 IP 直连,配置了 DDNS,服务器挂了就转到 CDN。
ShadowSaint
2019-10-24 11:36:54 +08:00
@eason1874 我知道你说的是走服务器的,可是你看:
图片等资源你走的是对象存储或者 CDN,CSS,JS 之类不常变动的一样可以走 CDN,
你这网站又几乎没有用户交互,那你页面需要展示的数据也可以预处理,或者用 CF 的全站缓存缓存了,
那你实际上这个服务器起的作用和传统意义上的后端服务器不太一样的,你带宽虽然低,但是并不需要传输什么东西,15 万 PV,真正需要用到你服务器带宽的请求内容也不是传统意义 15 万 PV 所需的带宽,所以你这个 1Mpbs 和大家用的 1Mpbs 也不一样
zqfxch
2019-10-24 11:40:34 +08:00
一个动静分离就能难倒大多数站长。
CDN 和对象存储的钱也可以加起来算一下,保有一个网站的成本就出来了。
eason1874
2019-10-24 11:56:20 +08:00
@ShadowSaint #142 对流量数据来说 ngx_lua 返回的 30KB 跟 PHP 返回的 30KB 不都是 30KB 吗?这有什么不一样?

后端怎么处理网页是后端的事,不管是用 1MB 抑或是 100MB 内存去处理,从 Nginx 出来是 30KB 那对流量来说就是 30KB,静态文件的 30KB 并不会比程序处理过的 30KB 小。至于用户交互可能产生的入带宽,这个是不受 1Mbps 限制,入带宽普遍不会太小,比如腾讯云入带宽最少是 10Mbps。

我帖子讨论的是网页服务提供 15 万 PV 要用多少带宽,你说的是提供 15 万 PV 要用多少计算力,离题了。
eason1874
2019-10-24 11:58:20 +08:00
@zqfxch #143 我这个站的 CDN 费用一个月不到 3 元,现在看起来其实不用 CDN 也行。评论区里说的对象存储+CDN 是指容灾备份。
eason1874
2019-10-24 12:00:28 +08:00
@jdgui #140 我记得云服务器禁止挖矿,快去看下协议是不是,不然因为几分钱被封了就亏大了。
myqoo
2019-10-24 13:15:31 +08:00
@eason1874 现在有种攻击就是专门刷 CDN 流量,几天下来估计就破产了~
POPOEVER
2019-10-24 13:18:16 +08:00
贴链接大家帮你测一下呗😏
mingmeng
2019-10-24 13:23:18 +08:00
@jdgui 云服务器禁止挖矿的,建议关了吧,别封了就真得不偿失了
arraysnow
2019-10-24 13:57:11 +08:00
@eason1874 #133 把静态放在 oss 是为了防止 cdn 回源时候服务器挂了吧?那你 pv 的页面直接暴露出服务器 ip 了?
eason1874
2019-10-24 14:15:08 +08:00
@myqoo #147 问题不大,有空再搞个云函数监控 CDN,高频 IP 直接拉黑,流量严重超额就自动关停。感觉云函数太有用了!而且免费额度足够跑几十个这种监控脚本了。
eason1874
2019-10-24 14:17:24 +08:00
@POPOEVER #148 公开是不可能公开的,这辈子不可能公开的。就是偷偷搞才能维持得了低成本建站。
eason1874
2019-10-24 14:20:12 +08:00
@arraysnow #150 目前网页域名直接解析到 IP,CDN 回源也是直接指向 IP。

把静态资源放到对象存储是指在被攻击的情况下,这种情况下直接把服务器弹性公网 IP 解绑了,禁止访问服务器,通过内网推送资源去对象存储,由 CDN 提供访问。
jdgui
2019-10-24 15:15:34 +08:00
@eason1874
@mingmeng 谢谢,我去看看
046569
2019-10-24 15:52:12 +08:00
@eason1874
讨论没有什么得罪不得罪的,对事不对人.
动静态分离本来就是按照你说的方式部署的呀.打包静态资源然后推送到 CDN .

大概的流程:
开发 => 上传到版本控制服务器 => 自动化测试通过 => 部署服务器打包 => 向 CDN 分发静态资源 & 向应用服务器同步源码并重启进程

我想这个你应该很熟悉了.

如果你要讨论 15W PV 需要多少带宽才能支撑用户访问,必须要计算上 CDN 消耗的流量.否则就是取巧了.无论是从技术上看还是从成本上看, CDN 都要计算在内.
myqoo
2019-10-24 16:33:39 +08:00
@eason1874 如果真有人攻击,用树莓派 hping3 命令不停发包(只需几百 KB/s 即可)就能让机器永久上不了了,封 IP 大不了几分钟重新拨号一次换 IP~~~
eason1874
2019-10-24 17:37:38 +08:00
@046569 #155 这个站页面资源小,一个 PV 全部资源 30~50KB,CDN 平均使用率~0.3Mbps,网页服务平均使用率不到 0.1Mbps,加起来不到 0.5Mbps,所以就算不用 CDN 其实也用不完 1Mbps,这就是我说的 1Mbps 都还有富裕。这些我在帖子都说了,可能表达不够清楚,一部分人理解一部分人没理解。

我说小网站就真的是小网站,没有发布流程的,改个代码随手就改了,一般没有容灾,静态资源也不会分离到其他服务器,直接套 CDN 回源本站,连 CDN 流量包往往也是白嫖(比如腾讯云老账户每月免费发放的 10GB 流量包)。我这个站点之所以上了容灾策略是因为月收入高了,以前只有几百块的时候我也不在意的,宕机了一天都不着急恢复。

所以不要拿企业调研标准来评价我的分享哈,我说 1Mbps 就真的是针对 1Mbps,不考虑没有 CDN 的情况,也不考虑 PV 再上一个数量需要多少带宽,服务器用完了也扛不住就切换到 CDN 凑合一段时间,到时候再考虑升级的事。
eason1874
2019-10-24 17:40:29 +08:00
@myqoo #156 服务器扛不住攻击,我说的拉黑 IP 是指加入到 CDN 上面的黑名单,不是指服务器本机黑名单,如果被攻击我就直接把弹性公网 IP 解绑了,直接不让请求进我服务器。
eason1874
2019-10-24 17:44:48 +08:00
@myqoo #156 你这个拨号换 IP 又提醒了我一点,还可以再加一个拉黑 IP 段的功能,宽带拨号换的 IP 往往跟之前的 IP 在一个 IP 段。
infra
2019-10-25 23:17:15 +08:00
弱弱的发一帖,用套路云的 1c1g,用 ctrl + f5 就可以把 wordpress 刷挂掉。

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

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

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

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

© 2021 V2EX