7月28日,一则“高考生因系统崩溃错过一本志愿填报”的消息引发关注。“西安直播”官方微博爆料,有考生在7月27日高考志愿填报最后一小时,高考志愿填报系统崩溃,点提交很久没有反应,系统退出重新登录填报,又没有保存功能导致重新输入浪费时间,导致过时未提交志愿。
每年某个集中时期内,各教育考试院的系统多少都会面临卡顿甚至崩溃的风险,高考查分系统崩溃、填报志愿提交不上的事情时有发生。也是非常令人头疼的网络问题。那么问题来了,致使系统崩溃的原因有哪些?如何解决高并发引起的系统崩溃?让我们来看一下。
一、系统崩溃的原因
1.访问峰值或请求超过服务器的承受力
企业平时租用和托管的服务器是有峰值承受限制的,一旦超过了该承受能力,就会导致服务器瘫痪,网站访问不了。直接原因是在一段时间内,网站的访问量巨大,超出了服务器的承受能力。这样的例子比比皆是,上周12306网站购票系统就出现了崩溃。
2.磁盘已满
导致系统无法正常运行最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。管理员经常会遇到日志文件用光所有的磁盘空间。Web服务器的日志文件、SQL*Net的日志文件、 JDBC日志文件,以及应用程序服务器日志文件均与内存泄漏有同等的危害。可以采取措施将日志文件保存在与操作系统不同的文件系统中。日志文件系统空间已满时Web服务器也会被挂起,但机器自身被挂起的几率会大大减低。
3.服务器超载
Netscape Web服务器的每个连接都使用一个线程。Netscape Enterprise Web服务器会在线程用完后挂起,而不会为已存在的连接提供任何服务。如果有一种负载分布机制可以检测到服务器没有响应,则该服务器上的负载就可以分布到其它的Web服务器上,这可能会致使这些服务器一个接一个的用光所有的线程。这样,整个服务器组都会被挂起。操作系统级别可能还在不断地接收新的连接, 而应用程序(Web服务器)却无法为这些连接提供服务。
4.服务器遭遇恶意攻击破坏
互联网时代黑客们充斥网络,网站服务器遭受攻击已经屡见不鲜。任何网站服务器都面临着网络攻击的风险,这是无法预测、无法避免的,但是我们也要做好防范,将风险降至最低。
如何防范服务器被攻击请阅读往期文章:服务器又双叒叕被攻击了,企业该如何应对服务器攻击事件?
二、由高并发引起系统崩溃的解决方案
1.提高硬件能力、增加系统服务器
2.消息队列
解耦+削峰+异步,通过异步处理提高系统性能,降低系统耦合性。在不使用消息队列服务器的时候,用户的请求数据直接写入数据库。在高并发时,数据库压力剧增下使用消息队列,用户的请求数据发送给消息队列后立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。由于消息队列服务器处理速度快于数据库,因此响应速度得到大幅改善。
3.采用分布式开发
不同的服务部署在不同的机器节点上,然后利用 Nginx 负载均衡访问。这样就解决了单点部署(All In)的缺点,大大提高系统的并发量。
4.数据库分库(读写分离)、分表(水平分表、垂直分表)
5.采用集群 (多台机器提供相同的服务)系统架构
6.CDN 加速
7.开启浏览器缓存,将页面静态化
8.使用合适的连接池(数据库连接池、线程池等)
9.使用镜像
镜像是大型网站常采用的提高性能和数据安全性的方式,镜像技术可以解决不同网络接入商和地域带来的用户访问速度差异。有很多专业现成的解决架构和产品可选。也有廉价的通过软件实现思路,比如Linux上的rsync等工具。
10.图片服务器分离
对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的。我们必要时把图片与页面进行分离。这样的架构可以降低提供页面访问请求的服务器系统压力,并且保证系统不会因为图片问题而崩溃。
三、总结
远齐科技网站开发解决方案已在内容管理、会员系统、会议系统、考试报名系统、企业电商等项目开发中得到了使用验证,系统安全、稳定、可扩展,支持高可用、高并发等复杂的业务需求。
原文链接:https://blog.csdn.net/weixin_39900468/article/details/111371458