<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          西安健康碼又崩了!隨便聊聊

          共 2214字,需瀏覽 5分鐘

           ·

          2022-01-08 22:41

          大家好,我是魚(yú)皮,這兩天有不少朋友來(lái)問(wèn)我:魚(yú)皮,西安健康碼又崩了,你怎么看?

          還有些朋友跟我開(kāi)玩笑:是不是你新項(xiàng)目上線,把他們服務(wù)器搞崩了?

          我就納了悶了,為啥大家知道這種消息總是比我快?我平時(shí)上網(wǎng)也不少啊,但為啥我就看不到這些信息呢?怎么大數(shù)據(jù)天天給我推薦的都是些娛樂(lè)八卦、唱歌跳舞的內(nèi)容!

          本來(lái)我最近工作就老遇到大 Bug,就不要再讓我感受 Bug 帶來(lái)的痛苦了好嘛!

          還有我要是有能力和膽量搞崩健康碼,我還擱這瞎寫(xiě)什么文章呢?

          不過(guò)在了解了西安健康碼崩潰的情況后,可以簡(jiǎn)單和大家聊聊,分享一點(diǎn)拙見(jiàn)。

          事件描述

          事情大致是這樣的,去年 12 月 20 日和今年的 1 月 4 日,短短兩周內(nèi),西安一碼通程序崩了兩次,導(dǎo)致市民無(wú)法掃碼亮碼,只能在寒風(fēng)中排隊(duì)等候。

          圖片源于網(wǎng)絡(luò)

          官方的解釋是:短期用戶訪問(wèn)量激增,大概是正常訪問(wèn)量的 10 倍以上,導(dǎo)致網(wǎng)絡(luò)阻塞、系統(tǒng)崩潰。

          于是,名場(chǎng)面來(lái)了:

          “時(shí)任西安市大數(shù)據(jù)局局長(zhǎng)劉軍參加發(fā)布會(huì)并回應(yīng)稱,西安市一碼通使用頻率加大,對(duì)網(wǎng)絡(luò)與平臺(tái)造成較大壓力,在全員核酸檢測(cè)的特殊時(shí)期,為減輕系統(tǒng)壓力,建議廣大市民 非必要不展碼、亮碼 ,在出現(xiàn)系統(tǒng)卡頓時(shí),請(qǐng)耐心等待, 盡量避免反復(fù)刷新 。”

          雖然聽(tīng)上去挺合理的,但總感覺(jué)哪里不太對(duì)勁。。。

          人類為一個(gè)小系統(tǒng)讓步?上千萬(wàn)人為幾個(gè)搞系統(tǒng)的小團(tuán)隊(duì)讓步?真就 “非必要時(shí)不亮碼,必要時(shí)碼不亮” 了。

          據(jù)說(shuō)后來(lái),該局長(zhǎng)被停職檢查。。。

          總之,在疫情形勢(shì)不容樂(lè)觀的情況下,這個(gè)事故的嚴(yán)重程度可以說(shuō)是 P0 級(jí)了。

          技術(shù)分析

          那么事情是否真的如官方所說(shuō),是由于網(wǎng)絡(luò)阻塞導(dǎo)致的系統(tǒng)崩潰呢?

          先說(shuō)說(shuō)什么是網(wǎng)絡(luò)阻塞。打個(gè)比方,把用戶的訪問(wèn)流量想象成往小水管中注水,如果流量突然激增,出水口太小來(lái)不及排水,水就流不動(dòng)了。

          怎么解決網(wǎng)絡(luò)阻塞呢?一種最常見(jiàn)的方案是對(duì)網(wǎng)絡(luò)進(jìn)行 擴(kuò)容

          提到擴(kuò)容,最簡(jiǎn)單粗暴的方式是,換個(gè)粗水管,就能應(yīng)對(duì)更大的突發(fā)流量。但如果平時(shí)流量用小水管就能應(yīng)對(duì),這樣改造就會(huì)很浪費(fèi)資源。

          除了這種方式外,其實(shí)有非常多優(yōu)秀的擴(kuò)容方案。比如之前看過(guò)美團(tuán)的一個(gè)分享,在某業(yè)務(wù)訪問(wèn)的高峰期(比如中午 12 點(diǎn)的外賣(mài)系統(tǒng)),系統(tǒng)會(huì)自動(dòng)協(xié)調(diào)其他非高峰期業(yè)務(wù)的部分資源給該業(yè)務(wù),從而保證總資源有限的情況下,順利扛過(guò)流量高峰。

          所以,如果健康碼第一次的崩潰是因?yàn)榫W(wǎng)絡(luò)阻塞,按道理來(lái)說(shuō)除了這么大的事故肯定會(huì)吸取教訓(xùn),對(duì)網(wǎng)絡(luò)進(jìn)行 擴(kuò)容 等措施的,如果做了擴(kuò)容,第二次的崩潰就不應(yīng)該再甩鍋給網(wǎng)絡(luò)了。但現(xiàn)實(shí)恰恰相反,第二次崩潰依然宣稱是網(wǎng)絡(luò)阻塞,那我肯定是不信了。

          而且有了第一次的經(jīng)驗(yàn),第二次又遇到了同樣的網(wǎng)絡(luò)阻塞問(wèn)題,真的要修復(fù)好幾個(gè)小時(shí)么?

          此外,事故發(fā)生之后,程序明顯發(fā)生了 回滾 ,界面恢復(fù)成了幾個(gè)月前的樣子!

          說(shuō)到回滾,我就來(lái)勁了,這種事我干的太多了,大多數(shù)情況下,都是寫(xiě)了 Bug 影響到線上項(xiàng)目了,才會(huì)做這個(gè)操作。

          所以我猜測(cè)一碼通的崩潰,肯定和系統(tǒng)之爛脫不開(kāi)關(guān)系。既然官方稱數(shù)據(jù)庫(kù)還能正常運(yùn)行,那么大概率是業(yè)務(wù)層代碼自身出了問(wèn)題。

          比如本來(lái)頁(yè)面很簡(jiǎn)潔,只需要從服務(wù)器查詢健康碼信息(根據(jù)用戶 N 天內(nèi)的行為進(jìn)行綜合計(jì)算而成),而一碼通新版本又多了核酸檢測(cè)情況等一些額外的信息查詢,所以就增加了單次數(shù)據(jù)庫(kù)查詢的耗時(shí),占用數(shù)據(jù)庫(kù)連接更久、釋放得更晚。請(qǐng)求很多的情況下,數(shù)據(jù)庫(kù)連接很快就被占滿了,導(dǎo)致新的請(qǐng)求都要一直排隊(duì)等待可用的數(shù)據(jù)庫(kù)連接,直到等待超時(shí)。

          數(shù)據(jù)庫(kù)連接池

          舉個(gè)例子,本來(lái)食堂提供兩菜一湯,大家排隊(duì)去食堂打飯,每個(gè)人要花 20 秒。后來(lái)食堂突然提供了烤腰子,大家又要多打一道菜,比原來(lái)多花 10 秒,隊(duì)伍移動(dòng)慢了,就導(dǎo)致后面的隊(duì)越排越長(zhǎng),直到把食堂堵死。

          當(dāng)然,也有可能是數(shù)據(jù)庫(kù)里又多了大量數(shù)據(jù),導(dǎo)致查詢時(shí)間變長(zhǎng)。打個(gè)比方就是食堂提供了更多菜品,大家挑選的時(shí)間更久了。

          要解決這個(gè)問(wèn)題,就要定位請(qǐng)求究竟在哪個(gè)環(huán)節(jié)等待,是數(shù)據(jù)庫(kù)連接池的最大連接數(shù)不足、還是數(shù)據(jù)庫(kù)本身的最大連接數(shù)不足等。常見(jiàn)的手段就是調(diào)整連接數(shù)參數(shù)、或者對(duì)應(yīng)用進(jìn)行擴(kuò)容。

          當(dāng)然這只是我的猜測(cè)~

          尾聲

          最后,我從網(wǎng)上了解到,大部分區(qū)域的一碼通,其實(shí)都是由騰訊和阿里免費(fèi)提供的。但西安不一樣,它的一碼通,是由當(dāng)?shù)卣块T(mén)招標(biāo)搭建的,而且還是在三天內(nèi)研發(fā)出來(lái)的!

          去年的報(bào)告

          因此,我覺(jué)得這次事故需要背鍋的人和團(tuán)隊(duì)真的太多了,下到寫(xiě) Bug 的開(kāi)發(fā)者、設(shè)計(jì)系統(tǒng)的架構(gòu)師、保障系統(tǒng)的運(yùn)維同學(xué),上到各公司和政府部門(mén)的領(lǐng)導(dǎo)決策者等等。西安不像其他省份一樣用全國(guó)統(tǒng)一、相對(duì)更穩(wěn)定的健康碼也就算了(本地?cái)?shù)據(jù)管理方便些),但究竟是誰(shuí)給了你們勇氣不對(duì) 僅花三天就上線上千萬(wàn)人使用 的系統(tǒng)進(jìn)行壓力測(cè)試和容災(zāi)演練的?

          雖然我不是這件事的受害者,不過(guò)光是讓我想像一下這么多人大冬天里排隊(duì)等系統(tǒng)修復(fù)的場(chǎng)景,我就真的是很氣憤了!

          當(dāng)然,如果這件事情真的是天災(zāi),就當(dāng)我在扯犢子吧。

          大概是這樣,就隨便聊聊,希望以后自己設(shè)計(jì)系統(tǒng)時(shí)能長(zhǎng)點(diǎn)心,盡量不要因?yàn)樽约旱氖д`影響到其他人。

          共勉!


          往期推薦

          剛看到份百萬(wàn)閱讀的學(xué)習(xí)路線,太牛逼!

          我爆肝 1 個(gè)月的新項(xiàng)目上線啦!

          腦癱小伙,成為高級(jí)網(wǎng)絡(luò)工程師!

          越自信,Bug 越多

          萬(wàn)萬(wàn)沒(méi)想到,這都能發(fā)現(xiàn) Bug?!

          瀏覽 118
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩三级国产 | 亚洲永久免费黄色电影 | 亚洲1区2区3区4区5区 | 久久先锋 | 豆花视频综合网 |