2010-11-11 20 views
0

Je compare une application que j'ai créée et qui utilise repcached (memcached avec réplication) pour stocker des objets et prendre un peu de charge sur la base de données.performances du client memcache php

Bien que l'analyse comparative de la page d'index je lance

ab -c 400 -n 5000 http://mysite

Quand je viens d'utiliser un serveur memcache avec

list($server, $port) = explode(':', $settings->memcached_servers[0]); 
$this->link = new Memcache(); 
$this->link->connect($server, (int) $port); 

Je reçois 1000 req/sec

Lorsque je dépasse plusieurs serveurs dans le pool avec

$this->link = new Memcache(); 
foreach($settings->memcached_servers as $server){ 
    list($server, $port) = explode(':', $server); 
    $this->link->addServer($server, (int) $port, 0, 10); 
} 

-je obtenir seulement 300 req/sec

La différence est énorme

Toute idée pourquoi?

je vraiment besoin d'avoir 2 serveurs pour la redondance, mais la performance est d'avoir également crucial

Il normal une énorme différence? Fondamentalement, la page d'index fait des appels justs 2 à la db obtenir une seule ligne, de sorte que les lignes sont mises en cache lors de l'exécution du test. Mais je suis surpris de voir que memcached a tellement chuté dans le test.

+0

Votre question a été coupée . Pourriez-vous l'examiner? –

+0

Le passage d'une connexion persistante (votre code pour un serveur unique) à des connexions non persistantes (votre code avec plusieurs serveurs) fait-il une différence? –

Répondre

0

Eh bien, il semble que le coupable était le paramètre de poids du addServer

Changer à 1 pour le 1er serveur et 2 pour le deuxième a fait et la performance est maintenant le même