2009-05-18 10 views
2

Drupalサイトをperfチューンします。 Siegeを使用してパフォーマンスを測定しています(Drupalビジターとして)。Drupalサイト - Memcache接続エラー

ENV: nginxの+のFastCGI + Memcacheの包囲戦が数秒間正常に動作して、我々は接続エラーに遭遇

: 例:同じ攻城テストconfiurationを使用して

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 

、nginxの+ FastCGI + Drupal Cacheは正常に機能しているようです。 例:

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 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; 
?> 

何が起こっている私はを推測あなたはmemcacheの中に持続的な接続を無効にしていないと、彼らはPHPのスレッドでたむろということです。 Memcachedは一度に〜1023人の兵士に奉仕することができ、それは包囲中は十分ではないかもしれません。

ab-cスイッチを詳しく見ているApacheベンチマークツールを試してみることもできます。それを使いこなし、結果がどのように異なる値で変化するかを見てください。

最後に、PHPマシンのmemcachedポート(通常は11211)にtcpdumpを実行して、接続に何が起きているのかを調べる必要があります。 drupalはそれらを始めますか?他のホストはRSTで応答するのですか、それともタイムアウトしますか?

memcached php documentation apiに、デフォルトで接続が非永続的であるというバグがありました。それらははデフォルトで永続的なです(よく、問題が発生した時点でした)。

この回答にコメントを自由にしてください。コメントを読み、必要に応じてさらに支援します。