没有扩容机器,抗住了70多倍的流量增长

从2012年开始,我们就吧腾讯公司内各个业务的404页面导流给宝贝回家,从2013年开始,我们更开放了404寻亲接入给第三方网站。这些导流给宝贝回家论坛带来了巨大的访问压力,于是我们又把宝贝回家的论坛服务器迁移到腾讯云上面来提供更稳定的服务。一晃块4年了。

国庆上班,宝贝回家的志愿者开始说网站好像有点慢了,再后来说网站打不开了。登录服务器一看log,访问量增长的有点厉害啊,疑似CC攻击,打开了各种防护,流量还是居高不下。只好赶快把弹性伸缩打开,在机器扛不住的时候迅速扩容扛过去。

(弹性伸缩是程序员和运维最好的朋友之一)

接着又找运维和安全的兄弟帮忙分析log,分析不出所以然,但是看到头像的请求量明显暴涨了数百倍,占据了log的大头,于是对头像的请求进行了分流,把头像都转向到CDN透传来缓解压力。但是CDN无法缓存用户没有设置头像(404)的情况,于是又修改了服务器配置,支持“软404”,也就是说在找不到头像的时候用默认头像通过200的方式返回,避免404。

这样折腾了一通以后,访问量终于降下来了,重新分析log,发现新增了数十倍的访问量,几乎全部来自于安卓手机。这时突然想起一件事。国庆前内部有个小群,在讨论把“QQ浏览器”的失败页面指向寻亲项目的事。当时也没上心,因为按照百度统计,QQ浏览器在国内的也就不到10%的市场份额,估计应该不会给项目带来太大的流量冲击。莫非,当时大家讨论的其实不是“QQ浏览器”而是“X5内核”?

X5是腾讯的移动端浏览器内核,被广泛应用在微信、手机QQ等腾讯的安卓客户端上。回到国庆前的群里面一问,果然不小心招来了这个大客户。这个客户有多大呢,也就比微信和手机QQ加起来大一些,没有意外的话就是全国最大了

有流量是好事,但是寻亲项目是个公益项目,没有提前准备好这么多预算啊……还是先从技术上想办法吧,谁让我们是专业志愿者呢?

1 先检查头像流量异常暴涨的问题:为什么页面访问量增长数十倍,头像的访问量增长了数百倍呢?对比分析了discuz的移动端和PC段页面后很快找到了原因:discuz论坛打开一个帖子的时候会显示所有评论者的头像,因此头像的访问量本来应该是帖子访问量的十几倍到几十倍。但是discuz对于PC端的头像加载采用了链接静态化、懒加载等优化手段,配合协议缓存大大减少了头像的访问量,而移动端没有做这些优化。

知道原因就好办了,在template/default/touch/forum/viewthread.htm中把

<span class="avatar"><img src="<!--{if !$post['authorid'] || $post['anonymous']}--><!--{avatar(0, small, true)}--><!--{else}--><!--{avatar($post[authorid], small, true)}--><!--{/if}-->" style="width:32px;height:32px;" /></span>

改为

<span class="avatar" style="zoom:0.62">
        <!--{if !$post['authorid'] || $post['anonymous']}--><!--{avatar(0, small, false, false, true)}--><!--{else}--><!--{avatar($post[authorid], small, false, false, true)}--><!--{/if}-->

沿用了PC端的头像链接生成方式。但是PC端的头像尺寸比移动端大一些,所以做了个zoom。

但是这样做完,服务器流量并没有降下来……因为头像被CDN全面分流以后,帖子的访问能力被释放出来了,现在访问论坛的帖子成了主要压力来源。

Discuz的论坛帖子是可以做伪静态化的,但是不能支持真静态化。有几个原因:如果访客是带着登录态来的,那么应该给他显示个性化的动态数;统一个链接如果由PC、手机、pad和WAP终端访问,应该返回各自对应的版本。因此discuz主要靠服务器缓存机制而不是静态化来扛压力。

但是分析一下用户场景就能发现在现状下其实是有很大的优化余地的:超过90%的用户都是由X5引流的其他app的用户,基本上不会论坛的注册用户,显示设备就是安卓手机,不用过多考虑多种设备的兼容问题。

因此我们把寻亲页面导流导一个独立的域名 404.baobeihuijia.com上,这个域名通过CDN来带cache透传论坛帖子,并利用discuz的伪静态化链接来实现真静态化。而对于终端兼容的问题要做两件事: a:修改后台php,识别到通过404.baobeihuijia.com域名访问的情况下,总是返回移动手机版本的帖子 b:在静态化的帖子的页面脚本上监测用户客户端。当发现当前用户其实不是移动终端的时候,用脚本调回到原来的域名bbs.baobeihuijia.com上提供动态服务。

做了这些事情以后,CDN吧绝大多数的新增压力分流走了:,静态

优化后虽然服务器负载还是比以前重了很多,但是已经可以用一台服务器扛起来了

那么最终这个抗住了X5引流的论坛使用了一个什么牛逼的服务器呢?

为啥配置这么低呢?谁叫这腾讯云的服务器这么能扛啊~~~

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器人网

没有示教器,还能控制机器人吗?

一般来说,操作FANUC机器人时,需要使用FANUC示教器iPendant来对机器人进行示教、做信号配置等。对于熟练使用示教器的用户来说,示教器就是他们控制机器...

1112
来自专栏数据和云

DBA生存警示:备份级误操作案例及防范建议

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》一...

2869
来自专栏大魏分享(微信公众号:david-share)

Red Hat混合云管平台-Cloud Forms-的前世今生

前面文章已经说过,红帽作为一家开源厂商,其所有企业化软件产品在社区都有源代码,混合云管平台Cloud Forms也不例外。今天,我们先来聊聊该产品的前世...

4488
来自专栏SAP最佳业务实践

SAP最佳业务实践:无变式配置按订单生产(148)-5产成品的技术变更

image.png 1、CSKB客户请求技术变更 客户请求作技术变更。步骤的目的是更改产品的配置(添加物料 R20)。 在BOM 浏览器中,用户参数设置是用来...

2664
来自专栏青枫的专栏

Linux的桌面环境gnome、kde、xfce、lxde 等等使用比较

  如果不是加入了图形界面,微软的Windows系列操作系统不会成功地占领计算机桌面这块高地。这种人机交换的图形化界面,使得界面更加直观、简易、而且更人性化,同...

671
来自专栏非著名程序员

是的,我又开发了一款产品,堪称效率神器

? 是的,最近我玩上了微信小程序,感觉开发这个还是蛮有意思的,所以,我又开发了一款小程序,邀请大家一起来看看,顺便欣赏一下。还请大家提提意见。 是的,继「活动...

3465
来自专栏张戈的专栏

首页快照不更新么?投诉试试吧!

过年在家由于网络问题,半个月都没顾得上博客,回来后又是换空间,又是修改网站名称以及描述等内容,导致百度快照一直停在了 2014-01-23 ,硬是保持了一个多月...

35815
来自专栏镁客网

因为涉嫌隐私泄露,微软Docs.com关闭了自己的搜索功能

1475
来自专栏全华班

分享一套OA协同办公系统

OA协同办公系统是高效工作流平台基础上,开发带有控制功能的OA办公系统、标准版功能模块:1、个人事务;2、工作流;3、行政;4、信息管理;5、人力资源;6、公文...

4561
来自专栏FreeBuf

两张图片告诉你为什么域名会被解析到65.49.2.178

2014年1月21日中国出现重大网络事故,大量域名被解析到一个65.49.2.178 这个IP了。 中国的一家DNS服务商DNSPOD于 2014 年 1 月...

1947

扫码关注云+社区