图片-稻子网
图片-稻子网
图片-稻子网
图片-稻子网

电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行

长安古城冬季,防疫形势严峻。两千名精英赶来帮忙,八方协助检测。

为有效控制疫情,西安已对全体员工开展多轮核酸检测。12月20日,在需要48小时有效核酸和连续多日核酸检测登记记录的特殊情况下,具有金边护身符美誉的“西安义玛通”出现系统故障。

一时间,焕普美林成为舆论焦点。众多IT行业的云高手走在了关注咨询的最前沿。针对“西安一码通”系统故障,云竹君在业主范围内进行了一定的技术交流,希望通过社区独有的IT技术优势,提出一些合理的意见和建议。

最后,愿为“西安一码通”的稳定运行贡献一份力量。

故障描述

1. 健康码打不开,点击二维码后页面一片空白。

2. 部分情况发生。

3. 核酸上报系统有问题,无法显示结果。

4. 恢复过程中,中国电信的手机网络可以开通健康码电信服务器高防,但中国移动无法开通。

图片[1]-电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行-稻子网

图片[2]-电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行-稻子网

图1 打不开的一码通讯

图2 无法显示核酸检测证书和疫苗接种状态

故障原因分析

对于“西安易马通”的失败,鹅厂、华为、中兴、ITC等10多位云写手从前端、后端、测试问题等方面分析了原因。

(一)主要问题

1.限流问题:当市民长时间刷新健康码失败后,退出刷新多次重试,新流量到达服务器,导致服务器压力增大,负载过重,说明即“西安一码”“通行证”制度未实施限流措施。

2.服务器问题:公司和个人在租用服务器时都会受到峰值负载限制。一旦超过服务器的负载能力,服务器将瘫痪,应用程序将被暂停,网站将无法访问。服务器有峰值限制,无法承受无限并发。服务器瘫痪的原因是,在同一时间段内,访问量大,造成了高流量的高峰,超出了服务器的承受能力。

3. 架构问题:“西安一码通”功能影响到“核酸检测”服务电信服务器高防,说明各个模块从接口到数据调用都相互影响,可能不是微服务架构。

4.性能过载:在典型的性能过载场景中,无论内因是数据库瓶颈还是网络链接数瓶颈等,外因都是过载造成的。

5.场景问题:

6. 设计漏洞:未考虑高流量、高负载情况,导致测试不充分;产品设计没有考虑千万并发访问,发货前也没有做同级别的压力测试。

7. 压力测试:当市民长时间看不到健康码时,退出刷新多次重试,新流量到达服务器,导致服务器压力增大,负载过重。这说明压力测试还不够。

(二)其他问题

1. 初步猜测是nginx后台的应用服务器在高并发下挂了。怀疑是缓存穿透,导致后台数据库响应时间变长,前台长时间无法响应。

2. 看官方报告,说是网关流量过大,系统失败,确认负载均衡有问题。传统在线系统一般采用lvs+nginx+动态DNS。这一次,系统初步推测没有使用动态DNS,导致单机网卡被阻塞。被摧毁;推测是恢复的时候用了新的网关机器,等待新的dns生效花了很多时间。

3. 对于中国电信的网络信号可以开启,而中国移动的网络信号无法开启的情况,不同的运营商使用不同的DNS系统。由于“西安易马通”系统电信公司参与,DNS指向新ip生效最快。

4. 这个问题反映了在国内外疫情形势依然严峻的背景下,“西安一码通”系统灾备建设仍然不足。没有进行故障隔离和流控处理,运维计划和弹性伸缩能力不足,SLA处理时间超过12H。各服务商只能处理服务问题,联合定位协调不及时。

5. 处理器可靠性测试包括测试标准可能存在的问题,用于计算的CPU部分是否合理。

6. 往往是硬件负载均衡器F5故障,不知道有没有~,限流是在gw里面做的,当然WAF应该是在高防安全策略后面实现的保证系统的高可用HA,早高峰可以使用MQ进行异步消峰处理。(猜猜没有,如果有BFF层,就不会这么惨了)。

问题解决建议

(一)产品建议

进行业务剥离,分离出小程序中业务相关性较高的模块。

(二)系统建议

1. 快速响应短期建议:

(1)页面优化:友好提醒用户耐心等待;当查询结果无法显示时,为避免社会恐慌和公众猜测,建议在页面上进行友好提示,而不是“忙碌无响应” “ 等待。

(2)访问限制:

2. 对项目长期稳定的建议:

(1)业务抽象,模块剥离,独立的业务模型,形成高内聚低耦合的可扩展性

产品;

(2)数据模型,结构尽量单一,回调响应快;

(3)接口隔离,多个请求间单一职责;

(4)微前端构建多个模块,形成模块隔离;独立部署,单独运行;

(5) 沉淀组件并重用它们以减少项目大小;

(6)设立中台,减少后台数据的直接请求;

(7) 应用层数据加diff算法,去除不必要和不变的数据渲染,加快渲染时间。

(8)崩溃警告可以让相关开发者快速上线响应。

3. 系统设计建议:

(1)架构设计:业务抽象,模块剥离,独立的业务模型,数据模型,结构关系尽量单一,接口隔离,独立部署,单独运行。

(2)云原生:尽快进行微服务改造、技术中台、服务网格、云原生弹性伸缩(K8S),尽快实现抽象、沉淀、复用,完善系统SLA尽量使用私有云,因为“”信息的特殊性。

(3) 中间件选择:数据库可以是TiDB这样的分布式数据库,完美兼容mysql协议,可以处理大并发,缓存可以使用redis,需要高可用。

(4) 分层管理:根据业务的重要性,分层管理,核心应用和服务优先考虑更好的硬件,服务部署中必要的隔离,避免故障的连锁反应。低优先级的服务通过启动不同的线程可以部署在不同的虚拟机上进行隔离,而高优先级的服务需要部署在不同的物理机上。

(5)CDN缓存:资源常用数据缓存CND,一方面加快用户访问速度,另一方面减轻后端服务器的负载压力。

(6)安全提升:提升“西安易马通”系统机房安全等级,应对各种极端情况,建议参考银行一流的业务系统建设标准;如作为关闭未使用的端口以减少不必要的暴露。

(7) 预警机制:服务可用性、磁盘空间、CPU负载、内存使用等指标需要有及时预警机制。

(8)网络可用性:无运营商,不同地区网络可达性监控

4.高可用设计建议:

健康码服务是典型的多读少写场景。用最简单最常见的服务拓扑: -> -> Main -> Cache & -> Sub-,试分析三高(高并发、高性能、高可用)设计的常见思路:

(1)服务,数据冗余

(2)负载均衡:流控是救命之道,不是最佳方案。“西安一码通”是疫情防控的重中之重,建议增加算力,提高网络容量,优化负载均衡,保证外部流量可以最优分配到后端服务器进行处理,建议使用lvs+nginx+动态dns,避免单点故障,如果钱不差,可以使用F5等硬件负载;

(3)热数据缓存:避免频繁从下游取数据导致下游和数据库过载,同时提高服务响应时间。在当前场景下,使用缓存需要额外注意数据一致性和缓存可用性。

(4) 降级限流:需要对业务链路的每个链路和节点进行流量阈值评估,及时限制过载流量,以保证最极端场景下的业务可用性。但是,需要注意核心接口限流本身,对用户影响很大。

(5)异步和快速失败,异步并行读取所需信息,限制等待时间甚至丢弃积压请求任务等快速失败方法也是提高可用性的有效方法。

(6)DNS负载均衡,多个IP对使用同一个域名,最简单的就是使用容灾,这样就不会出现某个nginx宕机影响整个集群。

(三)测试建议

1. 添加高性能自动化测试和压力测试;制定发布前的预防机制;

2. 服务演练:经常进行各种应急演练和灾备演练,提高问题处理效率,验证灾备系统的可用性。

以上基于“西安易马通”前后端短期故障原因的分析及解决方案建议,仅是云竹君作为一个技术范畴的思考和讨论。

作为一个拥有广大IT工作者的社区,我们希望通过自己的技术建议,为“西安一码”的稳定运行和持续优化提供建议,让“金边护身符”不断守护我们的安全。

图片[3]-电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行-稻子网

图片[4]-电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行-稻子网

图片[5]-电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行-稻子网

图片[6]-电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行-稻子网

图3 奋战在疫情前线的医护人员和秩序维护者

寒冬时节的古城虽然没有白雪皑皑的肃穆,

但是,共同抗击疫情的大旗正在空中飘扬。

在此,云竹君感谢每一位奉献在抗疫一线的抗疫先锋、医务工作者、秩序维护者。

向你问好;

向你致敬;

喜欢你;

虽然在寒风中感受不到你身体的冰凉,

你给我们带来的平安,我亲身经历过。

愿疫情过后的长安永安。

图片[7]-电信服务器高防-西安易马通BUG分析——云竹君建言献策,希望易马通稳定运行-稻子网

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片