2009-07-24 59 views
4

我一直在努力優化一個web服務需要返回有點快(少於1秒),並需要保持高負載的請求(大於1000 /秒) 。我們使用memcached作爲將對象「存儲在內存」中的一種方式。看來我們正在從memcache獲取大量超時錯誤。 [警告:客戶端123.456.789.10] PHP警告:Memcache :: connect()[memcache.connect]:不能連接到127.0.0.1:11211,連接超時(110)在高性能網站與PHP的Memcache

因此,對問題。

  1. 是否很好地利用memcache將對象存儲在內存中,這些對象在創建時很耗時? APC會成爲這些物體的更好位置嗎?讀取次數和

  2. 在設置memcache以更有效地工作時,我忽略了一些常見的缺陷嗎?

感謝您的任何幫助,我對memcache的工作有點新,並且我認爲我缺少一些東西。

回答

4

要回答你的第一個點:

  • 的memcached的力量在於它允許創建緩存服務器集羣:這是不是意味着要在單個服務器上(事件,你可以使用它使用這種方式)
    • 理論是,你有很多的服務器,並且每個人都有,你有沒有用
    • 使用這個RAM一些免費的RAM,您在這些服務器上安裝的memcached,並將其配置爲使用量的未使用的RAM
    • ,如果一臺機器停機,它會自動停止使用它,並將負載平衡數據放在其他機器上。memcached的缺點是(對於某些人),它是基於網絡的(即使只在一臺機器上使用它);這意味着有點慢「只有本地」
  • APC只在一臺機器上工作:它是偉大的(用作緩存機制)來存儲你只需要在一臺服務器上的數據,或者如果你只有一臺服務器;並沒有更多的數據可以存儲在RAM中。
    • 主要缺點是絕對不會縮放:它被認爲是一臺機器;如果你有10個,你必須在每臺機器上有相同的數據10次,一次。
    • 據說APC的數據傳輸速度要快5倍,因爲它是本地的,而且不是基於網絡的。

一件事約APC:如果你使用它爲它的操作碼緩存能力(你應該),確保將其配置爲擁有操作碼+緩存(以便它不運行足夠的RAM如果你需要更多(特定的)memcached幫助,並且在這裏沒有得到太多的幫助,那麼就有一個郵件列表,它有時相當活躍;也許嘗試可能會有用。

+0

如果您只有一臺服務器,則可以將memcached配置爲使用unix套接字而不是tcp。它應該加快一點(或更多)。 – 2017-10-01 20:24:51