高考生因系統崩潰錯過一本志願填報
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還是其他容器,圖片是最消耗資源的。我們必要時把圖片與頁面進行分離。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且保證系統不會因為圖片問題而崩潰。
總結
遠齊科技網站開發解決方案已在內容管理、會員系統、會議系統、考試報名系統、企業電商等項目開發中得到了使用驗證,系統安全、穩定、可擴展,支持高可用、高並發等複雜的業務需求。