2009-05-18 7 views
2

Nous cherchons à optimiser notre site drupal. Nous utilisons Siege pour mesurer les performances (en tant que visiteur drupal).Site Drupal - Erreurs de connexion Memcache

Env: Nginx + FastCGI + Memcache

Siège fonctionne bien pendant quelques secondes, puis nous courons dans des erreurs de connexion: Exemple:

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 

En utilisant la même confiuration test Siège, Nginx + FastCGI + Drupal Cache semble fonctionner correctement. Exemple:

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

Comme vous pouvez le voir, le temps de réponse est beaucoup plus élevé avec MemCache, en plus des erreurs de connexion.

Une idée de ce qui pourrait être faux ici ... et pourquoi Drupal lance des erreurs avec memcache en charge?

Memcache s'exécute sur une instance distincte. Mémoire de 2 Go allouée pour MemCache.

Répondre

3

I supposez que vous n'avez plus de connexions memcached. Veuillez lancer une vérification de votre installation memcached avec un script simple toutes les secondes. Puis commencez Siege. Je suppose que votre memcached cesse de répondre après un certain temps.

Script de test memcache php:

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

Ce que je suppose que se passe est que vous avez pas désactiver les connexions persistantes dans memcache et ils traînent dans les fils de php. Memcached peut servir ~ 1023 d'entre eux à la fois et cela pourrait ne pas être suffisant pendant le Sieging.

Vous pouvez également essayer ab, outil d'analyse comparative apache avec le look proche de l'interrupteur -c. Jouez avec et voyez comment les résultats changent sur différentes valeurs.

Enfin, vous devez exécuter un tcpdump sur votre port memcached (généralement 11211) sur la machine php pour savoir ce qui se passe pour les connexions. Drupal les commence-t-il? L'autre hôte répond-il avec un RST ou expire-t-il?

Il y avait un bogue dans l'API de documentation php memcached qui disait que les connexions n'étaient pas persistantes par défaut. Ils sont persistant par défaut (bien, ils étaient au moment où j'ai eu le problème avec lui).

N'hésitez pas à commenter cette réponse, je vais lire les commentaires et aider si nécessaire.

Questions connexes