Facebook 的 PHP 效能與擴充性(轉)

來源:互聯網
上載者:User

炙手可熱的 Facebook 是用 ">PHP 開發的。隨著一些技術交流,逐漸能看到 Facebook 技術人員分享的經驗。近期這個 geekSessions 網站上看到 Facebook 的 Lucas Nealan 分享的文檔比較有參考價值。

Cache 為 王

任何一個成功的網站都有一套最合適自己的 Cache 策略。

Note:這個層次圖畫的稍微有點問題,不是嚴格從上到下的。

The Alternative ">PHP Cache , APC

Facebook 平均每個使用者每天要訪問超過 50 個頁面,PHP的頁面載入時間的最佳化就比較重要了。在 ">PHP Cache 層,Facebook 採用了 APC。

Lucas Nealan 的 ">PPT 舉了一個例子,一個頁面顯示的時間從 4000 多毫秒降到了 100 多 毫秒。在 apc.stat 關閉的模式下,效能還要更好一些。不過需要重啟動或用apc_cache_clear() 來通知更新。

Memcached 層

APC Cache 的是非使用者相關的資訊,而使用者相關的資料 Cache 當然是在 Memcached 中。

Facebook 部署了超過 400 台 Memcached 伺服器,超過 5TB 的資料在 Memcached 中。這是當前世界上最大的 Memcached 叢集了。也給 Memcached 貢獻了不少代碼,包括 UDP 的支援和效能上的提升(效能提升超過 20%)。

程式 Profiling

Facebook 開發人員大量採用 Callgrind 、APD、 xdebug 、KCachegrind 等工具進行基準效能測試。任何一個 Web 項目,這也是不可或缺,也是比較容易忽略的一環。所有開發人員都應該具備熟練使用這些工具的能力才好。

補充一下:語言的選擇

為什麼 Facebook 選擇 ">PHP 而不是其他語言? 用Flickr 的 Cal Henderson 這句話就能說明了: "Languages's don't Scale, Architecture Scale"。

從 80-20 的原則看,APC 和 Memcached 是最主要的。在這兩個環節上下功夫,受益/開銷比要大於另外幾個環節。

(上面的圖是從 Lucas Nealan 的文檔截的,著作權是他的)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.