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?
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
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. –
@tomaszs - VÉRIFIEZ VOTRE QUESTION - et si vous ne vous trompez pas, vous VERROUILLEZ la table au lieu de VERROUILLER le memcache – ajreal