没有扩容机器,抗住了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 删除。

编辑于

我来说两句

4 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

干货梳理 | Vault7文档曝光的那些CIA网络武器

在维基解密曝光的CIA-Vault7文档中,包含了一堆晦涩难懂的名词、行话,以及一些不完整的描述和注册链接,这些信息非常有趣,但很多术语却让人很难理解。所以,在...

2068
来自专栏数据和云

苹果后端的Oracle数据库

最近在微博上,网友发布了一份来自于苹果公司的Oracle数据库AWR报告,虽然我们早就知道Apple的APP Store后端使用的就是Oracle数据库,部署在...

1955
来自专栏顾宇的研习笔记

你的 CI 在挖比特币吗?—— 记一次 CI 入侵的调查

我们的持续集成服务器搭建在AWS上的一个EC2的虚拟机中。采用Jenkins 2.46.1并且只有一个Master实例来运行所有的任务。且采用持续部署——团队每...

882
来自专栏安恒信息

邮箱安全服务专题 | Web漏洞是表象,代码容错不足是本质

上一期我们谈到了邮箱安全扫描部分的网络和主机安全检测,狭隘的讲这类漏洞是属于静态漏洞,只要我们有心,及时更新策略库,扫描发现和修补,可以把风险控制在一定的安全范...

2558
来自专栏CSDN技术头条

微软拥抱Linux,为时已晚?

今日,微软发布了一系列有关Linux的功能。首先,SQL Server支持Linux了,一周之后,微软宣布“原生的Linux二进制文件可以运行在Windows1...

2078
来自专栏FreeBuf

地方商业银行APP安全性分析

0x00、业务需求 国内133家地方商业银行作为商业领域国外IT厂商和商家必争之地,无论是IT基础设施建设、容灾备份系统建设、还是信息安全建设等,各家银行都做的...

2046
来自专栏张戈的专栏

备案不被K:利用关站保护或搜索引擎线路解析确保无痛备案

最新消息:张戈博客已分享更完善的无痛备案技巧,欢迎查看!==>http://zhangge.net/5017.html 相信很多站长不想备案的绝大部分原因有 2...

4705
来自专栏Crossin的编程教室

关于这波 Intel CPU 漏洞,我见过最形象易懂的解释

新年刚到,科技圈就炸了! 2018年1月2日,Intel CPU 被爆出设计漏洞。AMD 和 ARM 芯片也有一定程度的影响。 漏洞带来的影响主要是: 用户级别...

2829
来自专栏FreeBuf

远控木马中的VIP:盗刷网购账户购买虚拟礼品卡

为了省钱,很多人会尝试各种各样的方法免费获取网盘和视频网站的VIP权限。正因为有这种需求,各种所谓的“网盘不限速神器”或是“VIP助手”也就应运而生了。但这个工...

2039
来自专栏ytkah

微信公众平台系统升级致阅读数波动

昨天有位网友问ytkah:同一个订阅号发出,同一篇微信文章,在同一天的18:29查看阅读量时是8627,点赞量是62。为什么在20:32时查看阅读...

2616

扫码关注云+社区