2009-05-18 44 views
2

我們正試圖完善我們的drupal站點。 我們使用Siege來衡量性能(作爲drupal訪問者)。Drupal站點 - Memcache連接錯誤

ENV: 的Nginx + FastCGI的+內存緩存

圍攻運行正常了幾秒鐘,然後再碰上連接錯誤: 例子:

HTTP/1.1 200 29.18 secs: 5877 bytes ==>/
HTTP/1.1 200 29.39 secs: 5877 bytes ==>/
warning: socket: -1656235120 select timed out: Connection timed out 
warning: socket: -1673020528 select timed out: Connection timed out 

使用相同的攻城測試confiuration,Nginx的+ FastCGI + Drupal緩存似乎工作正常。 例子:

HTTP/1.1 200 1.41 secs: 5868 bytes ==>/
HTTP/1.1 200 1.40 secs: 5868 bytes ==>/

正如你所看到的,響應時間是MEMCACHE高得多,除了連接錯誤。

任何想法這裏可能會出現什麼問題......爲什麼Drupal在加載的memcache時拋出錯誤?

Memcache在單獨的實例上運行。爲MemCache分配2GB內存。

回答

3

I guess您用完了memcached連接。請每秒用一個簡單的腳本運行您的memcached安裝檢查。然後開始攻城。我猜你的memcached會在一段時間後停止響應。

測試memcache的PHP腳本:

<?php 
$memcache = new Memcache; 
$memcache->connect('localhost', 11211) or die ('Unable to connect'); 
$version = $memcache->getVersion(); 
echo 'Server version: '.$version; 
?> 

正在發生的事情是,你有沒有禁用內存緩存的持久連接,他們在php線程流連。 Memcached一次可以爲其中的1023個提供服務,這在Sieging時可能不夠。

您也可以試試ab,apache基準測試工具,仔細看看-c開關。玩弄它,看看結果如何改變不同的值。

最後,您應該在php機器上的memcached端口(通常爲11211)上運行tcpdump,以瞭解連接發生了什麼。 drupal是否啓動它們?其他主機是否以RST響應或超時?

memcached php文檔api中存在一個錯誤,表示默認情況下連接是非持久性的。他們默認持續(當然,他們是在我有問題的時候)。

隨時評論這個答案,我會閱讀的意見,並在必要時進一步協助。