(一)概述

今天是国考出准考证的时间,刚好女朋友也要报名了这次考试,作为合格的男朋友当然是要在第一时间将准考证信息下载下来。结果到了半夜12点之后,整个官网一直处于无法连接、502、503、接口报错等各种问题。到了凌晨1点才把准考证下载下来。作为程序员自然要好好分析下这一个小时官网究竟发生了什么事情。

(二)事情回顾

再12点准点网站开放的时候,已经很明显能感觉到页面的响应速度变得特别慢,接着出现了第一条错误信息:服务器繁忙,请您稍后再试:

随着几次刷新之后,进到了第一个系统页面,这里原本应该可以获取到的考试信息显示无法获取:

随着几次刷新后,页面也不见了,直接弹出nginx的502网关错误

接着还是nginx的报错,503 Service Temporarily Unavailable

最后就是在502和503之间来回跳跃,偶尔出来一次页面,整整一个小时。

(三)知识储备

首先复习一下所有状态码表达。Http状态码是表示Http响应状态的数字代码,由三位数字组成,第一个数字代表了响应的总体状态。

1XX:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理。一般来讲很少出现该响应。

2XX:代表请求成功被服务器接收,并响应。

3XX:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向。

4XX:表示客户端请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。最常见的404状态码。

5XX:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

其中502表示作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应

503表示由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复

(四)问题分析

以今年国考的规模来看,12点准时进入网页的人是过万的,因此大流量是打垮系统的主要原因。其实经历过以前的12306抢票或者学校抢课的朋友们肯定都太熟悉这种感觉了,基本上系统一开放就是半死的状态。

首先进入网站之后最先出现的是“服务器繁忙,请您稍后尝试”这条报错,说明此时的请求已经从客户端经过nginx打到了服务器端。而服务器端是做了访问量的限流,因此返回了服务器繁忙这条信息。因为当时也没看接口响应的情况,大概猜测是如此。

接着出现了未获取到考试信息这种报错,这种情况很有可能是已经进入了接口内部,但是接口在查询后台数据库时由于并发量太大导致超时等原因无法匹配到数据库信息。

接着报错变成了502 Bad Gateway。很明显此时的报错已经从应用来到了Nginx代理机器上。最开始Nginx还能把请求反向代理给应用服务器,而随着程序执行时间超过了Nginx设定的等待时间,越来越多的请求被堵塞在Nginx上,直接导致502的产生。

然后就是503 Service Temporarily Unavailable,服务暂时不可用,说明此时请求带给nginx和服务器的压力已经达到了服务器负载的上限。当然也有可能是Nginx上做了单ip访问次数限制,这点只是猜测。

(五)解决思路

这种大流量、高并发下解决系统卡死的最有效方案就是加资源,做降级,利用缓存,极致优化请求。以淘宝双十一为例,每年双十一是真正做到了将性能压榨到极限。淘宝在阿里云的支撑下实现了资源的可扩展性,因此到了双十一的时候首先要做的就是大量加服务器资源,既然一台服务器撑不住,那就五台、十台、一百台。

第二点是降级,将部分暂时可暂停的服务全部降级,你可以发现双十一高峰期的时候,阿里的很多功能是没法使用的,这些服务已经全部被暂时降级了。

第三点是利用缓存,参加双十一的商品信息在双十一之前的一段时间内是无法再修改的,原因就是这些数据将被合理地放进缓存中,并被提前预热。

第四点是机制优化缓存,这点主要是从代码层面,将耗时、多余的接口全部优化掉,做到不会产生无用的请求出来。

(六)总结

当然,我能理解为什么抢课或者报名这种每年都会发生的系统卡顿现象不修复的原因,这些官网不会为了一次的高并发现象而提前准备百倍的服务器资源,毕竟用了一次之后这些资源就浪费了。再加上这些系统可能已经迭代了十几年,没人敢动里面的代码。但技术方面如果实现不了可以从产品角度缓解压力,比如以抢课为例,既然同一时间抢课服务器顶不住,那就规定年级,让每个年级在不同的时间点抢课。这样一下子服务器压力就变成了原来的1/4。

今天就聊到这里,我是鱼仔,我们下期再见。

查准考证网站卡了整整一个小时进不去,被抢票支配的恐惧又来了相关推荐

  1. Linux双系统蓝屏,装双系统其中有一个系统进不去(蓝屏)

    如果双系统为XP  还想装个2000的 1 在XP系统下安装成为XP-2000双系统 在XP系统下安装成为XP-2000双系统 副标题: 一.前提条件 必须有FAT32(或FAT)文件系统格式的活动分 ...

  2. 绝地求生竞赛服务器没有响应,绝地求生比赛莫名掉线,一个小时都没解决,这是专业性?...

    原标题:绝地求生比赛莫名掉线,一个小时都没解决,这是专业性? 绝地求生游戏的电竞化,其实已经有了2~3年的时间,不管是解说的团队又或者是赛制,都已经趋向于专业化.尤其是建立多场联赛之后,好像所有的比赛 ...

  3. 关于解决重庆工商大学校园官网进不去的问题

    1.问题重述 近期不知道我们学校校园官网抽什么諷,老实进不去!我还以为校园官网一如既往的垃圾维护服务器,但是发现这么久了,应该是我自己PC设置的问题. 一进去网页就显示 ERR_CONNECTION_ ...

  4. 一个小时学会MySQL数据库

    致谢:一个小时学会MySQL数据库 一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库 ...

  5. 【转载】一个小时学会MySQL数据库

    一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数据库 ...

  6. 【MQ我可以讲一个小时】

    应用场景,消息可靠投递,消息丢失,消息重复消费,消息的幂等性,消息的顺序性,消息队列积压,延迟队列,消息过期失效,消息队列的高可用 使用消息队列有解耦,扩展性,削峰,异步等功能,市面上主流的几款mq, ...

  7. 应聘腾讯,面试官和我聊了一个小时的人生

    作者丨陆小凤(程序员江湖) 作为一名深受腾讯游戏"毒害"的90后,以前最大的理想就是到腾讯开发游戏,去看看腾讯游戏的葫芦里到底卖的是什么药,才会让这么多祖国花朵甘愿把时间和金钱都投 ...

  8. new date.gettime 与传入时间相差毫秒数不对_给女票解释为什么日本时间比中国时间快一个小时?...

    马上就要五一劳动节放假了,忙碌了半年,准备趁着假期出去放松放松,于是开始准备行程.女朋友听说日本5月份可以看樱花,于是她在看去日本的航班.我在旁边默默的看了下我的信用卡额度. 如上图,飞机13:40 ...

  9. 如何只用一个小时定制一个行业AI 模型?

    本文分享自华为云社区<如何只用一个小时定制一个行业AI 模型>,原文作者:HWCloudAI . 去年,在华为开发者大会2020(Cloud)期间, 华为云发布了ModelArts Pro ...

最新文章

  1. 找工作?该复习了!(转)
  2. U3D physics总结
  3. Ubuntu与Mint哪个好?Linux运维发行版本推荐!
  4. activemq5.14 mysql_activemq5.14+zookeeper3.4.9实现高可用
  5. java判断是否是路径_java判断是否是目录
  6. php system 255,GitHub - dwg255/OA-SYS: OA办公系统开源项目
  7. Android 学习 笔记_07. XML文件解析
  8. android 监听连接超时,android – Retrofit和OkHttpClient,在失败方法中捕获连接超时
  9. STM32f407 DCMI方式驱动 OV2640
  10. 注册99美元苹果开发帐号
  11. 拼多多秒杀活动的谣言
  12. 两台小米手机如何实现远程控制
  13. mysql定时任务,每天凌晨1点执行
  14. 软件设计师2017上半年
  15. mysql 查询上一周每一天的数据(含跨年问题)
  16. cxzday8-字符串作业
  17. 刘汝佳《算法竞赛入门经典(第二版)》习题(三)
  18. libpng error: Write Error
  19. 142_git的一个比较详细的教程
  20. 密码学基础:Pedersen Commitment

热门文章

  1. 系统学习iOS动画—— Flight Info(keyframe-animations)
  2. Automatic Optic Disc Detection in OCT Slices via Low-Rank Reconstruction
  3. SAP EWM - 物料主数据 - EWM系统一般属性
  4. mybatis一级缓存和二级缓存的区别?
  5. 详解Tomcat 配置文件server.xml
  6. 农村养老保险制度亟待完善
  7. cv2.resize resize.cpp:4044: error
  8. 控制器 PM866K01/ABB\SD833
  9. JAVA微信公众号开发入门
  10. rabbitMQ pika demo