2009-09-18 64 views
2

我們的服務器上有嚴重的延遲問題。我該如何解決我的S3/memcache延遲問題?

我們存儲在S3感興趣三件事情,並把它們塞進內存緩存爲好。

  • 用戶頭像平均〜25K
  • 文本〜1.5K
  • XML〜1.5K

我們有專門的RAM的128meg memcached的作爲現在... 作爲權利現在,它是騎74兆它

做一些基本的數學,我們應該能夠輕鬆擁有大約30,000文本文檔(與他們的XML表示)和1000個用戶頭像和仍然UND呃我們128meg致力於MEMCACHE

現在我們有可能在任何給定的時間 我們在十萬文字/ XML文檔的拉昇〜100米用戶的化身,但他們沒有得到觀看 像頭像做...這裏有一個,有那種類型的東西

有時在白天用戶頭像加載速度超級緩慢(表示他們必須從S3加載)和其他時間(當然加載後)你可以告訴他們正在從memcached服務;與我們在Apache PHUSION與REE運行Merb的文本文件

同樣的事情。 我們正在使用evan weaver構建在libmemcached-0.25.14上的memcached gem(我完全理解它不是最新的lib;這個gem需要它)

從我所看到的延遲問題是因爲S3這確實存在嚴重的延遲問題(有時對於單個化身有時爲500毫秒)。然而,它似乎不應該成爲一個問題,因爲它應該一直被緩存。高速緩存的默認到期時間設置爲1周。

相關代碼:

@cache = MMCACHE.clone 
begin 
    picture = @cache.get("/avatars/#{user.avatar}") 
rescue 
    picture = user.picture 
    @cache.set("/avatars/#{user.avatar}", picture) 
end 
@cache.quit 

克隆/戒菸是很重要的,因爲在Apache/PHUSION將有問題的共享連接時,它叉它,如果我們不收我們的聯繫,他們會保持直到我們用完文件描述符。

我開始不斷的memcache更密切的眼睛,看看我能追查我的問題,而是什麼建議?我們應該擺脫S3嗎?

+0

你期待,大大提高了應用程序的化身的數量和使用情況,從目前它是什麼?我問,因爲在目前的水平,memcached似乎可能沒有必要。 – 2009-09-18 19:23:07

+0

是的,我們 - 是的,我完全同意,在這個階段memcache是​​完全沒有必要的 – eyberg 2009-09-18 20:14:03

回答

6

如果我沒有理解由S3支持memcached的這個正確的,你存儲的圖像文件。

爲什麼不直接引用圖片來自S3,但設置過期時間對他們的HTTP頭,使他們不被拉到客戶每一次,這將有兩個優點:

  1. 頁面將加載因爲瀏覽器會從多個域中拉取頁面組件。

  2. 簡化你的架構。

1

您可以使用Amazon CloudFront獲取客戶端瀏覽器(如圖像,靜態html,css,javascript)提取的靜態資源。 CDN(內容傳送網絡)服務消除了此類數據的延遲問題;以下是對該服務的描述:

Amazon CloudFront是一種用於內容交付的Web服務。它與其他亞馬遜網絡服務集成在一起,爲開發人員和企業提供了一種簡單的方式,以低延遲,高數據傳輸速度和無承諾向終端用戶分發內容。 Amazon CloudFront使用全球邊緣位置網絡提供您的內容。您的對象請求會自動路由到最近的邊緣位置,因此會以儘可能最佳的性能提供內容。 Amazon CloudFront可與亞馬遜簡單存儲服務(Amazon S3)無縫協作,亞馬遜S3持久存儲您的文件的原始版本。與其他亞馬遜網絡服務一樣,使用Amazon CloudFront也沒有任何合同或每月承諾 - 您僅支付與實際通過服務交付的內容一樣多或一樣少的內容。

問候, Sirmak