2012-01-10 52 views
5

我也是一名php程序員。我一直想知道Facebook網頁如何加載速度如此之快,以至於在任何情況下都有很多用戶連接到它們。即使流量較小,我的網站也從未達到過這樣的速度。他們爲他們的網站做得如何非常好?是什麼讓Facebook頁面加載如此之快

即使我想讓網站的速度達到Facebook的一半,我該怎麼處理。我指的是PHP,MySQL和jQuery網站。

+0

什麼樣的機器託管您的網頁?該機器具有什麼樣的互聯網連接?我的猜測是,Facebook的設備是一流的,首先。此外,他們使用嘻哈,它將PHP轉換爲C++ ... – codeling 2012-01-10 12:33:41

回答

7

看看某人這個reddit的帖子誰在Facebook的實習:

http://www.reddit.com/r/programming/comments/nav19/facebook_releases_hhvm_60_percent_faster_than_its/c37pitt

後的最相關的部分:

  • 數據庫調用具有緩存鍵。 Memcached將數據庫命中短路。 Facebook的命中率高達99.9%以上。偶爾會有一個問題導致命中率降低到95%。這可能不會發生太多,但是當它發生時,它使整個站點變得非常緩慢。

  • 愚蠢的數據庫調用通常比獲取最少的智能數據庫調用更好。爲什麼?因爲大多數愚蠢的數據庫調用是相同的 - 因此非常緩存 - 並且使用服務器資源來過濾出來的東西比使用數據庫資源要經濟得多。或者換句話說,它減少了數據庫調用的複雜性,並且減少了每個數據庫調用的更多數據,並且更多的負載轉移到了memcached。

2

他們基本上是:

  • 規模水平
  • 編譯他們的PHP代碼
  • 使用MySQL在高度分佈的方式,就好像它是一個的NoSQL數據庫(這意味着他們不」噸加入這麼多,當查詢它)
  • 緩存很多
+0

我沒有得到「不加入」的概念。你的意思是說數據保存在一張表中? – Hacker 2012-01-11 03:44:19

+0

類別。這就是NO_SQL的基本功能。他們將數據存儲在巨大的哈希中。他們避免了加入關係來提高查詢性能。 – 2012-01-11 11:40:02

3

Facebook擁有非常高度的調整緩存和高度調整的MySQL集羣設置。嘗試在Facebook中搜索「Facebook上的MySQL」。他們的一些提示和技巧是傳奇!

不知道你的網站是什麼,它的編碼,數據庫結構等,這是不可能說如何優化您的網站。

即使對查詢進行最微不足道的改變,也可以日復一日地處理大型數據庫,這可能會對性能產生巨大影響。不要僅僅在整個表中使用索引,而應該使用像Sphinx這樣體面的索引引擎,而不僅僅是內部的MySQL索引。優化你所有的數據庫調用,以滿足他們生​​活中的需求。

而且配置MySQL日誌記錄Slow_queries要花等

奧賴利做了幾個不錯的電子書對業績的MySQL。

戴夫

相關問題