昨天爆火的“香菇蓝瘦”H5游戏的意想不到的爆发给我在技术角度上提了很高的要求。
解决高并发大流量大致算个伪需求,以现在的硬件条件和价格来看,绝大多数应用开发出来不会遇上如此场景。
有幸在一个月内两次面对这样的极端场景:
“香菇蓝瘦”H5小游戏峰值日访问5百万,并发上千。应用本身基本是纯静态,动态部分是初始化向微信请求openid,分享出去时还有个服务器的请求存储分享记录。
我的服务器是双核4G,很普通的机器,能用这样的机器勉强撑住其实很屌了。处理如此场景不只是纯技术问题,还有一些聪明的解决之道。说下我的一些解决方案。
1.静态资源CDN。大多数程序员都知道,似乎也没什么好说。
2.配置调优。我用的是Tengnie作反向代理,ngnix在高并发下性能不错。
3.因为CDN的域名不能与源站相同,所以html的请求得处理得远精小越好,甚至body里的代码可以一并放在js加载,而js可以放在CDN上。香菇游戏的html就只有3K,gzip压缩后只有1.8k。
4.ngnix再做个html缓存,进一步降低web容器的压力。
5.分享出去的链接放个其他域名的html作为着陆页,这个着陆页内部跳转到应用地址。而这个html再放到CDN上,进一步减少压力。