如何防止網站高並發引起的系統崩潰?

2020-08-06 遠齊科技
如何防止網站高並發引起的系統崩潰?

高考生因系統崩潰錯過一本志願填報

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還是其他容器,圖片是最消耗資源的。我們必要時把圖片與頁面進行分離。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且保證系統不會因為圖片問題而崩潰。

如何防止網站高並發引起的系統崩潰?

總結

三、總結


遠齊科技網站開發解決方案已在內容管理、會員系統、會議系統、考試報名系統、企業電商等項目開發中得到了使用驗證,系統安全、穩定、可擴展,支持高可用、高並發等複雜的業務需求。

相關焦點

  • TUP第19期綜述:從12306看海量並發網站架構(含PPT下載)
    本次活動邀請到了以下嘉賓,請他們分享對大數據處理和高並發網際網路架構設計的理解。(CSDN當時上線的兩個專題 【從鐵路訂票系統看高並發網站技術解決之道】、【如果由我來設計12306.cn】也都收到了大量的反饋和回復)。大數據、海量用戶的網際網路服務能力、大型網站面對高負載和並發的解決之道,一直以來都是全世界公認的技術難題。
  • 大話程序猿眼裡的高並發
    ,有很多用戶同時的訪問URL地址,比如:淘寶的雙11,雙12,就會產生高並發,如貼吧的爆吧,就是惡意的高並發請求,也就是DDOS攻擊,再屌絲點的說法就像玩擼啊擼被ADC暴擊了一樣,那傷害你懂得(如果你看懂了,這個說法說明是正在奔向人生巔峰的屌絲。
  • 高並發的核心技術 - 冪等的實現方案
    (當表存在唯一索引,並發時新增報錯時,再查詢一次就可以了,數據應該已經存在了,返回結果即可) 4. token機制,防止頁面重複提交 業務要求: 頁面的數據只能被點擊提交一次 發生原因: 由於重複點擊或者網絡重發,或者nginx重發等情況會導致數據被重複提交 解決辦法: 集群環境:採用token加redis(redis單線程的,處理需要排隊)
  • 大話|大話程序猿眼裡最全的高並發,快收藏!
    我是小小,我們本周的內容是大話高並發架構前言高並發經常會發生在有大量用戶量,用戶高聚集的業務場景,例如秒殺活動,定時領取紅包。為了讓業務可以在高並發的時候能夠相當好的運行,並給用戶一個良好的交互體驗,所以,考慮各種高並發的場景,設計高並發架構。
  • 高並發場景下如何優化伺服器的性能?
    為使更多童鞋受益,現給出開源框架地址:https://github.com/sunshinelyz/mykit-delay寫在前面最近,有小夥伴在群裡提問:Linux系統怎麼設置tcp_nodelay參數?也有小夥伴說問我。那今天,我們就來根據這個問題來聊聊在高並發場景下如何優化伺服器的性能這個話題。
  • SQL vs NoSQL:資料庫並發寫入性能比拼
    現在SNS網站每一個點擊都是一條/多條查詢,對資料庫寫的並發要求非常之高,而傳統資料庫無法很好地應對這種需求。而仔細想來SNS中大部分需求並不要求ACID,比如Like/Unlike投票等等。NoSQL吸取了教訓,比如有些NoSQL採用了eventually consistency的概念,在沒有Update操作一段時間後,資料庫將最終是consistency的,顯然這樣的資料庫將能更好的支持高並發讀寫。
  • 雙語:亞洲多國加大流感疫苗供應 以防止流感和新冠並發
    (原標題:亞洲多國加大流感疫苗供應 以防止流感和新冠並發)
  • 關於高並發,我想告訴你這些!
    除了這些典型事情,每秒幾十萬請求的秒殺系統、每天千萬級的訂單系統、每天億級日活的信息流系統等,都可以歸為高並發。很顯然,上面談到的高並發場景,並發量各不相同,那到底多大並發才算高並發呢?1、不能只看數字,要看具體的業務場景。不能說10W QPS的秒殺是高並發,而1W QPS的信息流就不是高並發。
  • 網站被cc了,如何破?
    3.cc會佔大量伺服器資源,哪怕你的伺服器再好,也經受不起長時間的cc攻擊,導致網站崩潰4.網站打開速度過慢 ,會消耗客戶的耐心,導致用戶流失,跳出量級高,損害網站的形象。CC攻擊是DDOS(分布式拒絕服務)的一種形式,也是近年來一種常見的網站攻擊形式,其攻擊原理是通過代理伺服器或者肉雞向受害主機不停地發大量數據包,造成對方伺服器資源耗盡,直到對方伺服器宕機崩潰。可以說CC攻擊會造成很大的影響,使真正的用戶訪問不了或者很慢,會導致大批用戶流失,給企業造成巨大的損失。
  • 大話程序猿眼裡的高並發 - OSCHINA - 中文開源技術交流社區
    簡單理解下高並發:高並發是指在同一個時間點,有很多用戶同時的訪問URL地址,比如:淘寶的雙11,雙12,就會產生高並發,如貼吧的爆吧,就是惡意的高並發請求,也就是DDOS攻擊,再屌絲點的說法就像玩擼啊擼被
  • 最後一刻系統崩潰,錯過一本志願填報,考生痛哭:我該怎麼辦?
    高考志願填報是有截止時間的,有網友在7月微博中爆料稱,在高考志願填報的最後一個小時,陝西省高考志願填報系統崩潰這個信息一經發布,立刻引起了網友的熱烈討論。「在規定的時間裡填報,合規合情。高考志願指南那本書裡說得清清楚楚,教育考試院負責網絡安全穩定可靠,現在的問題顯然是教育考試院的問題。」
  • 「面經」慌了,面試居然被問到怎麼做高並發系統的限流?
    經微信公眾號授權轉載,如需轉載與原文作者聯繫作者:nick haocnblogs.com/haoxinyue/p/6792309.html開濤大神在博客中說過:在開發高並發系統時有三把利器用來保護系統緩存緩存比較好理解,在大型高並發系統中,如果沒有緩存資料庫將分分鐘被爆,系統也會瞬間癱瘓。使用緩存不單單能夠提升系統訪問速度、提高並發訪問量,也是保護資料庫、保護系統的有效方式。大型網站一般主要是「讀」,緩存的使用很容易被想到。在大型「寫」系統中,緩存也常常扮演者非常重要的角色。
  • 高並發監控系統 WGCLOUD,修復儀錶盤圖表渲染問題
    WGCLOUD基於java語言開發,是springboot構建的監控系統,支持高並發高性能,核心模塊包括:伺服器集群監控,ES集群狀態監控,CPU監控,內存監控,數據監控,網絡流量監控,服務心跳檢測
  • 尷尬的面試現場:說說你們系統有多大QPS?系統到底怎麼抗住高並發的?【石杉的架構筆記】
    那你簡歷上說,你熟悉高並發相關技術,包括Redis、RocketMQ,等等,那你到底做過高並發系統沒有啊?好吧,我錯了,我確實不知道什麼是高並發,我就是學了這些技術然後就寫在簡歷上了。(心裡活動)咋回事,搞半天是沒相關經驗的,都是自己學了一下啊,好吧,那來壓一壓薪資,看來不能當資深碼農來對待了 ,就當做普通的來面一下好了於是兩個人進入了一系列的技術問答,但是面試官心裡有數,這個候選人最多就是給一個普通工程師的職位,因為其實他並沒有過技術在項目如何落地的一些經驗。
  • Elixir 與 Go 多角度對比:背景+編程風格+並發處理
    所以,在高並發到來之前,需要尋找高性能的語言來做替補,主要用來替代 Rails 的角色。Golang 是首先想到的,但在 Rails 社區 Elixir可以說高性能的代名詞。在查找這兩門語言對比的時候,發現了這篇文章。在過去的幾年裡, Elixir 和 Go 的流行度均有巨大的提高。這兩種語言通常能滿足開發人員尋找的高並發方案。
  • Oppo百萬級高並發mongodb集群性能數十倍提升優化實踐
    同時整點有大量推送,因此整點並發會更高,mongodb默認的一個請求一個線程這種模式將會嚴重影響系統負載,該默認配置不適合高並發的讀寫應用場景。Mongodb默認網絡線程模型不適合高並發讀寫原因如下:1. 在高並發的情況下,瞬間就會創建大量的線程,例如線上的這個集群,連接數會瞬間增加到 1 萬左右,也就是作業系統需要瞬間創建 1 萬個線程,這樣系統load負載就會很高。2.
  • 「高並發」億級流量場景下如何實現分布式限流?
    可以採用Redis+Lua技術實現,通過這種技術可以實現高並發和高性能的限流。Lua是一種輕量小巧的腳本程式語言,用標準的C語言編寫的開源腳本,其設計的目的是為了嵌入到應用程式中,為應用程式提供靈活的擴展和定製功能。
  • 哪些內容的網站APP適用CDN加速?
    靜態資源加速;隨著網際網路開發和迭代速度越來越快,我們訪問的網站也變得越來越龐大,一般的企業官網以及各類展示型網站的伺服器上都存儲了大量靜態資源,當較多用戶訪問我們的網站請求JS、CSS、圖片等靜態資源時,高並發量增加源站了壓力,造成訪問網絡擁堵,導致我們的網站變慢卡頓。
  • 防止網站被鏡像的方法
    如何知道自己的網站是否被鏡像:複製自己網站的完整標題(查看自己站點首頁源碼,其中 <title>起重機 - 龍達起重機</title>),然後在谷歌和百度等搜尋引擎裡搜索,如搜索:intitle 起重機 - 龍達起重機,如果有其他網站的網站標題、描述及網站內容跟你的一樣,只有域名不一樣,那就是被鏡像了。
  • SQL Server高並發解決方案四個優化
    【IT168 評論】現在大家都比較關心的問題就是在多用戶高並發的情況下,如何開發系統,這對我們程式設計師來說,確實是值得研究,最近找工作面試時也經常被問到,其實我早有去關心和了解這類問題,但一直沒有總結一下,導致面試時無法很完整全面的回答,所以今天我專門總結概況了一下關於SQL SERVER高並發解決方案,希望能幫助大家