網站當機是不可避免的嗎?

上篇文章”WordPress.com 當機,影響千萬個部落格“,報導了Wordpress的大規模當機,CNN也談到了”Why website crashes are unavoidable — at least for now“,他認為網站當機是無可避免的問題,如果真的是這樣的話,那麼未來如果許多服務都上了雲端運算的話,當機了以後會造成多大的影響呢?

WordPress的當機讓許多大站的部落格都停擺,不只是讀者無法閱讀到內容,而是已經影響到廣告的效益,不過好在只有數個小時的中斷,對於讀者與企業還不至於影響太大,如果今天停工的是電子商務網站,那麼數個小時的中斷很可能損失數十萬、甚至於數百萬的業績。所以網站當機真的是不可避免的嗎? 當然不是,如果中斷後會造成巨大損失的話,當然不能只是99.99%的uptime,而是必須100%的無誤運轉。

這篇”Twitter’s Performance Problems Explained By a Twitter Engineer“提到了Twitter的效能問題,在2008年Pingdom的報告中(如下圖),Twitter算是名列前茅的 …. 差勁,是所有社交網站中最會當機的一個,Twitter的Fail Whale可以說對於使用者是很熟悉的了。

為何Twitter這麼容易當機,當然使用量高是其中一個因素,另外的原因就是:

  • The team put two important, fast-growing, high-bandwith components on the same segment of Twitter’s internal network.  將兩個重要而成長快速的元件錯放在同一個區段位置 …
  • The network wasn’t being monitored the way it should have been. 網路沒有如以前一樣的監控
  • The internal network was also temporarily misconfigured. 內部網路沒有設定正確 …
  • 總而言之,就是設定出問題+沒有監控 …

    網站當機或運作出問題,通常的問題都出在 : (1)超出系統負荷 (2)沒有做好微調 (3)設定出問題 (4)沒有監控機制

    如果不是因為惡意攻擊的超出系統負荷,應該算是最讓人高興的當機了 … 因為表示很多訪客到訪,但是如果沒有盡快調整到正常,也會讓人笑不出來的。

    超出系統負荷如果是硬體類的問題,例如頻寬不足、伺服器不足 … 如果scalability許可的話,只要出錢就能解決問題; 如果是軟體類的問題,例如系統無法再吃更多的記憶體、程式的寫法太吃資源 … 就可能不是能夠馬上解決。也就是如果超出系統負荷是因為scalability(規模可伸縮性),而當系統無法調整此scalability時,那麼問題就大了。

    而沒有做好微調 跟設定出問題,大概可以歸為同一類問題,就是mis-configuration,要由錯誤的設定調整到正確的設定,如果系統龐大的話,也不是三言兩語可以解決的。

    不管是前面哪些原因,如果沒有監控機制的話,根本無法事前找出問題,或是事後解決問題。因為所有的問題都不能用猜測的,都需要監控機制的數據才能判斷或避免慘劇,如本站之前的硬碟毀損就是根本沒有監控機制,才會事前完全不知道硬碟即將毀損。

    OK,講了半天意思是什麼? 意思是網站當機是不可避免的嗎? 絕對不是,完全看網站當機會造成多大的損失,只要完善的規劃與運作,網站當機絕對是可以避免的,或是至少可以快速的恢復。

    如果你仔細的觀察許多大的網站,你也許會發現許多資源都沒有優化(Optimization),也就是明明可以不需要這麼浪費資源的,明明可以不需要每個頁面顯示都去連線資料庫的,明明資源可以切割來提升效能的 … 太多的小小浪費累積起來就變成了大的浪費。

    為什麼會如此呢? 大多都是因為便宜行事,所有的作業都照規則的話,一來可能時間不允許,二來可能因為懶得修正舊有架構。

    以下幾個效能的問題,也許你也可以自己觀察看看:

    (1)server是否有啟用壓縮模式?

    (2)哪些動態程式可以改成靜態html?

    (3)哪些動態程式連接資料庫是可以避免的?

    (4)動態程式連接資料庫的效能還能提高嗎?

    (5)資料庫的結構是否已經最佳化?

    (6)網頁的每個元件(html/image/css/js…)是否已經都最佳化?

    CNN的那篇文章大概是想替Wordpress說話,但是說實在的,網站當機是可以避免的,並且可以在尚未造成具大損失前恢復正常,但是前提是必須完善的規劃與運作,如果能夠做到uptime 100%,那麼才能安心的邁向雲端運算,否則一切都免談了。

    在〈網站當機是不可避免的嗎?〉中有 3 則留言

    1. 技術錯誤加世界杯流量:Twitter多次掛點

      http://news.pchome.com.tw/science/ithome/20100618/index-12768191383095652005.html

      雖然已經解決之前的問題,但Twitter坦承還有更多問題待解決,並暗示代表Twitter故障的那條鯨魚還是隨時可能出現。

      Twitter 坦承,由於內部的技術誤判,再加上世界杯足球賽帶來的龐大流量,導致Twitter出現多次當機;而根據流量監測網站pingdom的紀錄顯示,自6/8 到6/16九天Twitter僅有一天完全正常,其中有四天當機一小時左右,Twitter認為這是從2009年10月以來當機最嚴重的一次。

      Twitter 的技術部門6/11在部落格上解釋,主要的原因是一個子網域的流量超過系統負荷。技術部門認為他們做錯三件事:不應該把兩個流量快速成長的設備擺到同一個子網域、網路設備設定錯誤、沒有監控內部網路流量。Twitter目前已經加大內部流量承載能力一倍,改正網路設備設定,並增加對內部流量的監控。

      在解決這三個問題的同時,他們還發現更多嚴重的問題,導致Twitter多次當機。Twitter表示,他們有長期的改善計畫,但也會做立即性的調整,讓網站能夠支撐世界杯足球賽引發的流量,但他們也承認,在網路流量巔峰的時刻,代表Twitter故障的那條鯨魚還是可能掛在網頁上。根據Twitter官方的服務狀況網站,Twitter為了維持服務,6/9暫時關閉搜尋、Hovercard、趨勢、朋友數目、上傳個人照片等功能。

      Twitter 出現問題的期間,其他的競爭廠商如Facebook、噗浪等,網站狀況正常,並沒有因為世界杯足球賽增加的流量產生問題。

    2. 推特流量暴增 改版等世足落幕

      http://tw.news.yahoo.com/article/url/d/a/100619/5/27qkz.html

      (中央社台北18日綜合外電報導)世界盃足球賽推波助瀾,微網誌「推特」(Twitter)近日流量屢創新高,影響所及,推特網路計劃進行的大幅調整,被迫延到世足賽結束之後。

      世足賽11日開賽以來,每次有球隊進球,就有成千上萬的推特會員發文通報親朋好友。

      平常推特每秒鐘約有750則推文,但日本隊14日在世足賽出戰喀麥隆進球之後的30秒鐘,每秒平均出現2940則推文,創下推特成立4年多來的最高紀錄。

      巴西14日在對北韓之戰踢進第1球之後,每秒出現2928則推文。

      但上推特談籃球的人數,還是比足球迷多。洛杉磯湖人(Lakers)昨天擊敗波士頓塞爾蒂克(Celtics)獲得美國職籃NBA年度總冠軍之後,每秒出現3085則推文,刷新幾天前創下的最高紀錄。

    3. 為什麼會大當機?

      http://www.ithome.com.tw/itadm/article.php?c=61465

      其實歸納起來,多數大當機的事件,究其背後原因,都是幾個連鎖的錯誤造成的。不過正所謂失敗為成功之母,透過學習別人當機的經驗,或許你也能避免一些可能的錯誤

      系統大當機的時候,我想所有面臨這個狀況的IT人,腦中浮現的第一個想法,一定是「為什麼?」吧。

      其實歸納起來,多數大當機的事件,究其背後原因,都是幾個連鎖的錯誤造成的。舉例來說,影響十一萬臺機器,日本史上最大規模的銀行ATM系統當機事件,禍源的起源,竟然只是一間銀行的ATM系統因為瞬間斷電而重開,然後錯誤像滾雪球一樣,一個接一個把狀況帶到無可挽回的地步。

      雖然系統當機的問題五花八門,不過正所謂失敗為成功之母,透過學習別人當機的經驗,或許你也能避免一些可能的錯誤,防範大當機事件於未然。

      從日本經驗來看
      大當機事件多是因為連鎖錯誤造成
      日本史上最大規模的ATM當機事件,就是由4個連鎖的人為和系統錯誤造成的
      http://www.ithome.com.tw/itadm/article.php?c=61465&s=2

      2大硬體當機主因
      性能預留不足與備援維護不確實是當機常見原因
      硬體性能預估保留的不足或失誤,以及備援系統平時維護的不確實,是因為硬體而造成大當機事件的最常見原因
      http://www.ithome.com.tw/itadm/article.php?c=61465&s=3

      3大軟體當機主因
      避免軟體同質化,應用程式設計與資料庫也是重點
      軟體過度同質,很容易會因為軟體廠商的錯誤而受到嚴重的影響;此外,應用程式、資料庫,也常是當機事件發生的原因
      http://www.ithome.com.tw/itadm/article.php?c=61465&s=4

      4大因應手法
      快速找出當機原因擬定對策才能避免災害擴大
      迅速找出問題,並且盡快與相關人員與單位建立好替代方案的共識,才能避免因為當機造成的二次傷害
      http://www.ithome.com.tw/itadm/article.php?c=61465&s=5

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *