今年五月高新区一家做钒钛材料贸易的公司去天津参加国际矿业展会。展会上把二维码印在了所有宣传资料上结果展会第二天网站直接崩了——同时在线人数超过了服务器承受极限(大概500人同时在线)。负责人刘总在展会上急得团团转给我打电话问能不能赶紧解决。这种情况其实很典型:平时流量不大一到特殊时期突然暴增服务器扛不住。
当时的应急处理
因为是展会期间时间紧迫我们采取了最快的应急方案。第一步:立即升级云主机配置从2核4G临时升到8核16G带宽从3M升到10M——阿里云支持在线升降配重启即可生效。第二步:开启阿里云CDN加速所有静态资源分流出去减少源站压力。第三步:在首页做了一个简单的排队等待页限制同时在线人数超过一定数量后显示"当前人数较多请稍候"。第四步:精简首页去掉不必要的动画和大图减少单次请求的资源量。整个过程大概花了四十分钟网站恢复正常。展会期间的总访问量最终达到了三万多次峰值同时在线1200多人如果没有处理的话全程都是不可用状态。
长期方案怎么做
展会结束之后刘总说不想再经历这种事了让我帮他们设计一个长期的解决方案。方案核心是弹性架构——平时用低配置省钱高峰期自动扩容。具体做法:负载均衡+多台ECS实例组成一个集群平时只开一台2核4G的低配机。配置弹性伸缩规则:CPU使用率持续超过70%超过三分钟时自动增加一台新机器降到30%以下五分钟后自动缩减。所有静态资源走CDN动态请求经过负载均衡分发到各个实例。数据库用RDS云数据库自带主从切换和自动备份。这套方案的日常成本比原来单台机器多了大概30%(因为要多付负载均衡和CDN的钱)但在高峰期可以自动扩容到原来的5-10倍容量不用担心再崩。
费用对比
L总让我帮他算了一下费用。原来的方案:一台2核4G ECS 3M带宽一年大概两千二。新的弹性方案:负载均衡(年费约五百)+ 一台2核4G ECS作为基准(年费两千二)+ CDN流量费(每月约八十)+ 弹性扩容时的额外机器费用(按实际使用时间计算展会那几天大概多花了三百)。全年总费用大概四千左右比原来多了不到两千块。但这多出来的两千块换来的是再也不怕流量突增导致的宕机了。刘总说光是展会那几天没出问题挽回的潜在客户价值就不止这个数。
总结
服务器选型和架构设计不能只看"平时"的状态还要考虑最坏情况下能不能扛得住。很多承德本地的企业平时流量很小用最低配就够了但一旦参加展会搞推广或者遇到旺季就可能突然暴增。弹性架构的好处就是平时省钱用时够用按需付费。建议你也想想自己的业务有没有这种"平时闲得要死忙时要命"的特征如果有的话就该考虑弹性方案了。我可以帮你设计和部署一套适合你规模和预算的弹性架构。