沒有一個網站的效能像 Twitter 這樣這麼令人牽腸掛肚,看見那條大鯨魚總是讓人感覺很無奈。Twitter 的營運專家 John Adams
在 Velocity 2009 上做了一篇題為 Fixing Twitter
的技術分享(PDF
),人家也是一直在努力阿。John Adams 在 2008 年七月加入的 Twitter ,對於 Twitter 的網站穩定的確做了不少工作。
Twitter 營運團隊的職責:
- 軟體效能(後端) Software Performance (back-end)
- 可用性 Availability
- 容量規劃 Capacity Planning (metrics-driven)
- 組態管理 Configuration Management
看完這個接近 50 頁的 PDF
,除了滿足我們一小部分技術窺探的癖好,或許也可以學到點什麼。
不重複發明輪子
對於監控,Twitter 用的就是 RRDtool
,Ganglia
、MRTG
這些已經成為很多網站標準配備的組件。而不是自己寫一大堆功能重複的東西。值得注意的是, Twitter 也一直在用 Google Analytics 進行業務分析。
不重複發明輪子,可以打磨輪子,比進行如一些功能指令碼定製之類的工作。
發明不重複的輪子
Twitter 開源了他們自己用的一個 Apache 模組 mod_memcache_block
(a distributed IP
blocking system),這個模組根據 HTTP
代碼要求節流訪問頻率。熟悉 Twitter 的朋友會知道這是針對第三方應用程式的必須的一個功能,否則的話,會產生類似 DDos 的效果
John Adams 說這個模組是他多年以來就期待的東西,我相信,如果有人已經做了同樣的事情,他們肯定不會自己再寫一個。
儘可能的自動化
無論是組態管理還是針對各項功能的"開關",都儘可能的自動化。依賴於人來控制一些事情容易"規範",但是流程冗雜,節奏變慢。
更好的理解硬體
擁抱新技術體系,使用更有經濟效益的硬體(比如對 8 核 CPU
的選型與更換)會帶來更好的收益。而這個要建立在對硬體體系的正確理解上才行。
另外幾句話要記住:
- Disk is the new Tape. (記憶體是新類型的磁碟. 磁碟是新類型的磁帶)
- Kill long running queries before they kill you. (問題是如何提前發現? 有效監控!)
- Use metrics to make decisions, not guesses.
- "Cache Everything!" not the best policy
或許還應該學到更多...
--EOF--