2010-11-17 4 views
2

J'utilise Memcache sur mon serveur pour stocker des résultats de requête utiles. Et j'ai un problème avec les performances de mon serveur. J'ai commencé à enquêter et c'est une sorte de problème de verrouillage.Shoud Je ferme chaque connexion à Memcache après avoir obtenu de la valeur?

Ma première supposition est que c'est Memcache.

Je l'utilise de cette façon:

$memcacheRT = new Memcache; 
    if (not open) $memcacheRT->connect('localhost', 11221) or die ("Could not connect"); 
    get some values from memcache() 
    //not closing 

J'ouvre la connexion à memcache première fois que je besoin de quelques données à partir de là et le laisser ouvert jusqu'à la fin du script dans le cas où j'ai besoin plus de choses et n » Je ne veux pas l'ouvrir à chaque fois. Il va fermer à la fin du script sur son propre droit?

Cette approche est-elle correcte? Peut-il se produire comme un verrou entre des demandes de pages simultanées? Combien de connexions peut-il y avoir à un port local (11221)? Et si je le change pour se fermer à chaque fois après avoir obtenu de la valeur, cela affecte-t-il les performances que j'ouvre et ferme à chaque connexion?

+1

vous devriez être en mesure de conserver la connexion sans pénalité, assurez-vous de ne pas utiliser des méthodes qui tentent de queryout les méta-informations sur les dalles (listes, clés) comme ces recherches verrouillent Memcache pour la durée de cette requête – FatherStorm

+1

Comment avez-vous déterminé qu'il s'agissait d'un problème de verrouillage? Je doute que memcache soit votre cou de bouteille à moins que vous ne l'abusiez (1000 demandes par chargement). Vous pouvez installer Xdebug et essayer de trouver ce qui prend le plus de temps. –

+0

@tomaszs - VÉRIFIEZ VOTRE QUESTION - et si vous ne vous trompez pas, vous VERROUILLEZ la table au lieu de VERROUILLER le memcache – ajreal

Répondre

2

Essayez d'utiliser des connexions persistantes memcache

Questions connexes