鹿晗關曉彤公開戀情,是如何把新浪微博的伺服器搞垮的?

為什麼客戶端刷新、評論這些功能掛了?原因是什麼?數據量過大嗎?


我覺得不像資料庫掛了,微博這種級別的架構根本不是簡單的分散式server+DB就能抗住的,別說鹿晗關曉彤搞個大新聞,就算平時運營的壓力也扛不住。

剛才王高飛說加一千台伺服器暫時頂住了,資料庫是不可能臨時這麼彈性伸縮的,能伸縮的無非就是HTTP Server、各中間層服務、緩存或消息隊列。

大概是微博自動擴容的演算法沒寫好,或者沒敢全交給演算法來做。比如你發現流量升高了,自動下單加幾十台伺服器能接受,突然加一千台要是程序出bug的話微博得白支出多少錢啊……多半是這個量級的擴容需要運維手工來確認。

而且是在長假最後一天的中午爆發的,不是訪問高峰期,伺服器也準備不足。明星公布戀情這件事又沒法預警,誰知道他們啥時候心血來潮忽然介紹女朋友啊……


哈哈哈哈哈哈哈哈哈,看到這條新聞,原來中國最歷害的黑客在娛樂圈啊

鹿晗歷害了,一句話黑了大微博,黑了之後還了無責任,正是高手中的高手,做為一名老碼農,我輩自嘆弗如

微博團隊說,臨時加了1千台伺服器,也就用了幾個小時。

有人說,「是資料庫被壓垮了」,其實不是。因為有DB緩存和靜態緩存,資料庫的吞吐量遠大於web server。

有人說,是「bin log忘記清理」,也不是了,這種分散式大系統都有自動清理機制,否則人工清理將是噩夢啊。

有人說,是因為「微博自動擴容的演算法沒寫好」,這是不對的,恰是因為自動擴容的演算法寫的太好了,才有了這次災難。如果流量短時間內暴漲的太歷害,稍做Delay幾百毫秒,災情就會過去;如果反應非常靈敏,流量上來了馬上擴容增機,很快伺服器集群池就會耗凈。等到最後一台伺服器被100%徵用後,任何一個用戶的回復就成了壓倒駱駝的最後一根稻草,一個伺服器跨了,流量迅速壓向其它伺服器,引發多米諾骨牌效應,伺服器們指數級迅速宕下。

所以說,恰是因為微博分散式系統的自我擴容機制太好了,所以才有了這次災難。鹿晗發微,僅是外因。

微博助手說,是因為單條微博轉發、評論次數太多了。這是不全面的,單純的轉發評論多,並不能壓垮大微博。鹿晗的這條微博應該也不是轉發評論最多的一條。是因為轉發、評論密集度太大了,短時間同時在線迅速爆漲,把伺服器擠跨了。

經此一役,程序員圈無人不知鹿黑客

經此一役,微博再不敢低估鹿飯們的能量,明天馬上開會擴大伺服器備用空間

經此一役,風蕭蕭兮易水寒,以後,明星以擠跨微博為榮,試問國內,誰還能刷新鹿黑客的記錄,像票房一樣,拭目以待...


數據分析。頂級流量無疑。

微博覆蓋用戶超8億人次。熱搜相關霸佔20+,6個爆。

剛剛去淘寶搜了下鹿晗。。。

此外
鹿晗公布戀情全世界都知道了
全球趨勢第7

韓國KBS的推特

日本熱搜趨勢第二

韓國熱搜第一

關曉彤也上了熱搜第一。

法國

越南

中央出來安慰大家

熱搜總體熱度第一

知乎1小時出121道新題,以下是不完全截圖。


曾經

現在……

年度最佳打臉。


程序猿單身那麼多,好不容易挑個好日子結婚。
邊結婚邊寫代碼。。。


根據目前已有的信息猜測是資料庫被壓垮了,先發猜想,稍後寫個程序分析當時的點贊評論轉發數據驗證猜想。

微博這樣的網站,如果被大流量壓垮,不太可能是非必需欄位沒有容錯。之前經歷過幾次熱門事件,我相信在爆發熱點新聞的時候,微博會暫時犧牲一點數據準確性來保證關鍵服務可用。也就是說,光讀請求很難壓垮微博。

根據事故時的微博點贊數、轉發數、評論數、評論的回複數、評論的點贊數、轉發的評論轉發點贊數等的量,微博極可能是由於事發當時需要寫入資料庫的請求太多(寫行為峰值可能達到了幾十萬甚至更高),以及大部分寫都會落到同一條微博上,而且某些寫操作還需要觸發相應的其他寫行為(回複評論需要通知評論者、點贊需要進關注者 feed 等),資料庫壓力過大扛不過來,最終跪了一會兒。其實如果緩存做好,這時候還是可以滿足核心數據讀請求的(當然微博緩存做的並不好,我微博個人頁數據錯誤很久了反饋也沒用)。如果資料庫壓力過大時對部分寫請求非同步化,或者考慮暫時拋棄部分請求換取穩定性,當然這樣也各有利弊,不一定是好的。

可以抓取當時鹿晗發的微博的所有評論轉發回復點贊的時間,看下故障前幾秒成功的寫行為究竟有多少。

不負責任的未經驗證的猜測(畫圖水平有限,省略了部分過程,但是從上下兩個過度的箭頭數,大致表達了很多請求是讀且未壓到資料庫,將就看吧[手動捂臉.jpg]):


常見的web攻擊有哪些?
答案:DDoS, XSS, SQL注入, 公布戀情。


更新,疑問,卓偉搞了大事情?

?(ˊ?ˋ*)一次成功的熱度,當然要炸一個伺服器祭天了。



扯DB和負載的,你當微博是小web網站呢?社交網路的瓶頸從來都不是這些,從來都是timeline和熱點問題。

根據後面來總所說的增加1000台機器的信息來看,這麼大的量,這麼容易scale的服務,應該是計算或存儲型服務。

所以我大膽推測,有三種可能:

1、timeline的近實時生成服務打爆了,大量的明星轉發,導致瞬間百億級的更新消息放出,timeline實時生成服務的機器不夠用了,所以需要擴容。

2、微博做了智能排序,裡面可能做了複雜的機器學習計算,甚至可能對重複消息做了複雜度比較高的合併處理,當出現這種級別的大事件時,智能排序服務算不過來了,需要臨時加機器進來。

3、大量圈內明星轉發,導致明星集群(明星肯定是在獨立集群計算的,n年前的技術分享就提到過)打爆,比如一些計數緩存,評論緩存之類的高讀寫服務,這類也是比較耗資源的。

當然三者也可能都出現了哦。


更新:附上新浪微博官方數據統計信息!

微博傳播效果分析


原回答:

讓我放兩張來自微博後台數據的圖片:

這樣看可能不是很直觀?

沒有對比就沒有傷害啊!關曉彤熱議趨勢硬生生漲了1122.9%,社會社會!

最後,還是陳警官說的到位啊:


100個座的餐館,平時高峰期才50個人,夥計又準備了100個可以臨時搭建的餐位,就算來200個人也可以擠一擠,夥計吹牛說來500個也小意思,結果來了1000個強行擠進店的客人,於是連餐桌上都站滿了人。

在應對流量比平時峰值高一個數量級的事件時,一定要有計劃有作戰方案,阿里的雙十一,如果不是提前那麼多天備戰和演練,給他來個突發的,一樣藥丸。這種事情不是一方努力可以做好的,雲計算也不是說擴容就能幾分鐘內擴容完,你突然要求幾分鐘內新增1000個主機,對雲服務商也是很大的考驗。

況且,大家都在放假,開發和運維就那麼幾個人值班,你看阿里雙十一上千人嚴陣以待,守個通宵,可見準備工作和人海是多麼重要。


截止目前17點10分,鹿晗關曉彤 的第一條評論的子評論,第二頁依舊無法刷新。 顯示該評論已被刪除,事實上這條評論並未被刪除。一般熱點數據,首屏都是會緩存的,但是如果把每一條評論都緩存,代價就太高,所以當訪問第二頁沒有被緩存的評論時,會穿透訪問資料庫,這時由於服務限流或降級原因,沒有獲取到第二頁的評論,這時候就展示兜底數據評論被刪除。
距離事發已經快5個小時,依然出現服務被降級的情況,可見大家對鹿晗的關注程度。。。 這麼久還沒有恢復,我覺得不是微博立馬加機子就能解決的,可能緩存方面設計出現了問題。
以上均為個人猜測


也許這就是愛的力量吧,愛的天崩地裂,把伺服器都給震塌了。

我還能說什麼,當然是原諒這對製造地震的年輕人啦。

新浪微博伺服器的高可用做的還是有缺陷啊,負載均衡的策略應該調整一下了。

最後祝福一下這對俊男靚女吧,畢竟這麼明目張胆的秀恩愛,也算是搞了個大新聞。


網站崩潰無非就那麼幾個原因:
1.訪問量過高,後台系統無法承受。
2.伺服器配置太低低於應對突發情況到來時的衝擊。
3.部分惡意攻擊。
當然我們來看肯定是第一條嘛,鹿晗和關曉彤都是公認的流量小生阿,平常一點風吹草動都會輕輕鬆鬆上熱搜。現在這麼大一個事可並不是簡單上個熱搜的事情能解決的。(這其實完全和高考查分時一樣啊,訪問人數太多系統應付不過來,只不過這次的量更大,居然連新浪都處理不來了。)
除去各家粉絲,還有數不清的吃瓜群眾關注,加之各種營銷號和自媒體瘋狂報道,帶來的已完全不是新浪微博系統能短時間處理的了。
還是說阿,群眾的力量我是真的無法想像。
我只是一個吃瓜群眾,還能不能好好過個假期了。
回答不專業,如果有技術上的大佬能指出來不勝榮幸。如果有不合適的本人會立即修改。


中間件自動擴容出現問題。


暫且不說微博了
單單是我200好友的朋友圈刷一邊下來都讓我覺得鹿關戀情的相當膨脹了
而微博這種人流密集平台,垮掉真的是一點也不誇張
不過明星藝人之間的恩怨情仇對於我們旁人來說適度關注就好,畢竟沒有關曉彤,鹿晗也並不會相中我們


微博的朋友趕緊把微博的後台架構拋出來,當時的實時監控數據和關鍵日誌貼起來。

個人覺得知乎網友能拯救你們的架構(逃)

PS:難道不就是平時容災/故障演練沒做好么?或者是沒能力做?微博真心缺人才,人才都被bat搞去了,不花點大價錢怎麼行,趕緊學學今日頭條啊,不然就完了


人家已經努力過了


謝邀,用python自然語言SnowNLP訓練500W條情感數據模型和WordCloud 詞雲對兩人微博評論情感數據分析,詳情請查閱:

https://zhuanlan.zhihu.com/p/30061051

最新更新:截至分析時間10-08 14:50,@M鹿M 的微博共收穫轉發數462,884次(其中有效轉發336,777次)、 評論數986,409條,點贊數2,566,617個;@鹿晗工作室 轉發微博並成為關鍵傳播用戶。

附:新浪微博官方數據統計信息!

微博傳播效果分析

「瞬時突發數倍極端峰值」較「可預期流峰值流量」因各種因素不可預期性,技術解決方案更加複雜。目前解決方案只能說解決大多場景,綜合技術與成本平衡,完美「銀彈」還需探索。


因粉們和西瓜群眾多次微博點擊,刷新,轉發,點贊,評論等超過網站所能承載的最大並發請求,導致系統就癱了,極大可能出現資料庫上。

分析得出:

1.媒體,這是一次正常的「安全事件」,上億的「肉雞」(粉們和吃瓜群眾)對微博的「攻擊」,媒體的能量非常之強大;

2.微博,國慶假期宕機,估計得「挨批」。建議對系統、緩存、資料庫進行重構,不要因為公布個「戀情」就跪了,必要時可以犧牲部分流量管來支持熱搜詞,保證整個平台的「穩定性」;

3.運維,我也是做運維工作,還是挺同情的,國慶假期最後一天也不讓好好過,在車上還得處理問題。辛苦,辛苦!不過我一個微博的朋友給我說,微博後台應用可以根據熱點事件的流量已實現了實現動態擴容和縮容。

最後,粉們讓我們一起點贊和感謝來祝福他們!


推薦閱讀:

中國銀行業的高端伺服器,浪潮能不能取代 IBM 成為主要供應商?

TAG:資料庫 | 微博 | 伺服器 | 鹿晗 | 關曉彤 |