[为 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 进程一天至少被挤掉一次。
20770 次点击
所在节点    云计算
167 条回复
arraysnow
2019-10-23 14:16:59 +08:00
静态资源比较小吧,如果静态走 cdn,那 1m 真是妥妥的
lc7029
2019-10-23 14:27:45 +08:00
@eason1874 被黑大不了关站呗,又没多少重要的东西或者说不能中断服务
okwork
2019-10-23 14:32:39 +08:00
最头痛的是那些搜索引擎光爬数据,不输出。你去搜还没有结果,要投广告才给显示。爬什么爬吖
wolfan
2019-10-23 14:34:12 +08:00
字体文件可以放 cdn 不?
lydasia
2019-10-23 14:40:39 +08:00
你拿 1mbps 做代理,不干别的,就浏览网页,看看什么感受?
eason1874
2019-10-23 14:41:11 +08:00
@okwork #83 新站从抓取到展示需要一点时间。

@wolfan #84 可以,现在 CDN 都支持自定义 header,你配置好跨域 header 就没问题了。
jsq2627
2019-10-23 14:54:57 +08:00
楼主说的基本靠谱。
公司有个 PV 是楼主 10 倍的站,服务器峰值带宽差不多是 15m,日常也就 6-8m 的样子。网站做了动静分离,静态资源都是走 CDN。

所以说对于纯动态请求的后端服务,真心用不了多大带宽。即使带宽不够,多开几个 5m 机器做负载均衡,比把单机带宽升上去便宜多了。
alexkkaa
2019-10-23 15:08:33 +08:00
这不废话吗,你把图片视频都放在别的服务器上,主服务器 100k 都够用。 你试着放一堆视频,我觉得你可以申请破产了
BOOM
2019-10-23 15:09:37 +08:00
楼主目前方案按我的理解如下:
运行配置:一台 1c1g1m 在跑整个服务( 1m 的是主网卡,还搭配了一个副网卡);
运行服务:ngx_lua + MySQL + 监控 MySQL 脚本;
资源分配:针对每个 PV,.html 在 vps 上 gzip 压缩(约 25kb ),css + js + 图片 + 字体在 CDN 上(约 35kb );
备选容错:准备了两台额外的 2m 和 5m 的服务器防止带宽不够;
调控政策:每个 ip 最高速度 20kb/s。

省钱方案:
1. 购买学生机、特价机、特价流量包;
2. 上 CDN 按量付费。

我的问题:
1. 只有.html 是 gzip 压缩吧?是否是 CDN 上的资源就不打包了,让他们一个个地单独和 CDN 请求,但是用户和 VPS ( ECS )的请求只进行一次,服务器返回 gzip 给用户。
2. CDN 并不是全局 CDN 吧?就是还是会暴露服务器的真实 ip。
eason1874
2019-10-23 15:35:43 +08:00
@BOOM #89 你就是列文虎克吧,我评论里说的你也看完了,厉害,基本就是你说的这样,除了最后速率限制不对,我是按单个请求限制速率,不是按单个 IP。

1. 用户跟 ECS 就只有网页 doc 本身一个请求,其他静态资源全是走 CDN,都开了 Gzip 压缩。
2. 服务器 IP 没有隐藏,网页域名直接解析到服务器 IP,CDN 用的其他域名,现在打算干脆不用 CDN 了。

我在个人网站安全方面的心得是:打好系统安全补丁,及时屏蔽异常 UA/IP,不要在站长社区发自己的网址,就没事。如果发了,套 CDN 也不管用,因为套 CDN 也不影响人家刷你的广告联盟把你账户搞到封号。
PetterZhu
2019-10-23 15:43:58 +08:00
带宽,主机,流量,永运都不是问题的点,没有流量,才是问题的点。。。。。。
空有屠龙技,无龙可屠,整毛线!
laminux29
2019-10-23 15:58:43 +08:00
@dongcxcx 早中晚这也算是集中?你对集中是不是有什么误解?
laminux29
2019-10-23 16:01:49 +08:00
@eason1874 反正网站是你的,而且你也不发网站与网址,所以数据你怎么编都行。
BOOM
2019-10-23 16:05:45 +08:00
@eason1874 #90
优化到这么细致那还是有点儿不可思议,讲道理这可以是一劳永逸的事情。
技术栈呢? PHP+MySQL 吗?
如果有两台服务器在内网,可以拿一个当数据库,或者直接购买阿里 /腾讯的云数据库吧。
eason1874
2019-10-23 16:13:41 +08:00
@laminux29 #93 本想解释,打着字突然不想多说什么,就一句话:你没见过世面
SingeeKing
2019-10-23 16:21:17 +08:00
我一直好奇为什么国内带宽这么贵,感觉国外的带宽全是不限制而限制流量
eason1874
2019-10-23 16:32:29 +08:00
@BOOM #94 服务器就两个自装软件,编译了 ngx_lua 模块的 Nginx 和 MariaDB。

本来想用 PHP + MySQL 的,因为 PHP 是我学的第一门语言,用起来顺手,但当时只有一台 1c 1g 的服务器,考虑到 PHP-FPM 太吃内存于是放弃了,用了 ngx_lua。

现在只有后台管理程序会用到 MySQL,面向用户的数据都事先生成文件缓存了,当用户访问的时候 ngx_lua 就会去读对应的文件缓存然后解析模板返回。因为 ngx_lua 模块代码会加载到内存,网页模板也就随着加载到内存,所以每次访问也就读取个内容文件,个人感觉效率跟 Nginx 提供静态文件访问效率一样(没测过,猜的),至今没遇到过什么瓶颈,跑一个月 Nginx 安然无恙,MariaDB 至少重启几次(不懂配置,用的默认配置)。
heiheidewo
2019-10-23 16:34:12 +08:00
都赚钱了,可以把带宽弄到 5M 啊,价格没贵多少,万一哪天流量大涨呢
Rwing
2019-10-23 16:35:17 +08:00
请教是什么站,可以分一杯羹不?
myqoo
2019-10-23 16:35:38 +08:00

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

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

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

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

© 2021 V2EX