Comment savez-vous si memcached est en train de faire quelque chose?
Je suis de tester l'utilisation de memcached pour le cache de django points de vue. Comment puis-je savoir si memcached est en fait la mise en cache rien de la ligne de commande de Linux?
Vous devez vous connecter pour publier un commentaire.
Je sais que cette question est ancienne, mais ici, c'est une autre approche utile pour les tests de memcached avec django:
Comme @Jacob mentionné, vous pouvez commencer à memcache en très mode verbose (pas comme un démon):
Pour tester votre django cache de la configuration, vous pouvez utiliser le faible niveau de l'api de cache.
D'abord, lancer l'interpréteur python et charge votre projet django paramètres:
À partir du shell, vous pouvez utiliser le faible niveau de l'api de cache pour tester votre serveur memcache:
Si votre cache de configuration est correcte, vous devez voir un résultat dans memcache similaire à ceci:
Vous pouvez utiliser telnet et les stats de commande par exemple:
memcached-tool 127.0.0.1:11211 stats
- vous n'avez pas besoin de telnet./usr/share/memcached/scripts/memcached-tool
./usr/share/memcached/scripts/memcached-tool /var/run/memcached/memcached.sock stats
Commencer memcache pas comme un démon, mais normaux, alors il suffit d'exécuter
memcached -vv
très détaillé. Vous verrez quand faites-vous du et jeux au serveur memcache.Moyen Simple de tester pour memcache de travail était de se faufiler dans un commentée horodatage sur chaque page servi. Si le timestamp est resté le même sur plusieurs requêtes à une page, la page est mise en cache par memcache.
Dans Django réglages, j'ai aussi configurer le mécanisme de cache pour utiliser un fichier de cache sur le système de fichiers (très lent), mais après avoir atteint les pages que j'ai pu voir qu'il cache les fichiers placés dans le chemin d'accès au fichier afin que je puisse confirmer la mise en cache a été active dans Django.
J'ai utilisé ces deux étapes pour le travail de mon problème de mise en cache. Je n'avais vraiment pas de mise en cache activée correctement dans Django. La nouvelle méthode pour activer la mise en cache est à l'aide de la 'django.middleware.le cache.CacheMiddleware' middleware (pas le middleware avec deux middleware pièces à la première/dernière middleware paramètres.)
Memcached peut effectivement écrire dans un fichier sur son propre, sans avoir à recourir à redémarrer manuellement. Le
/etc/init.d/memcached
script d'initialisation (/usr/lib/systemd/system/memcached.service
sur EL7+; pouah) peut appeler memcached avec les options spécifiées dans/etc/memcached.conf
(ou/etc/sysconfig/memcached
sur EL5+). Parmi ces options sont verbosité et le chemin du fichier journal.En bref, vous avez juste besoin d'ajouter (ou commentaires) de ces deux lignes pour que conf/sysconfig fichier...
...et redémarrez le démon avec
service memcached restart
(EL3-7) ou/etc/init.d/memcached restart
(debuntus)Et puis vous pouvez surveiller ce journal à la manière traditionnelle, comme
tail -f /path/to/log
, par exemple.Pour étendre Nœud de réponse, vous pouvez utiliser
socat UNIX-CONNECT:/var/run/memcached.sock STDIN
pour déboguer une socket unix.Exemple:
Vous pouvez tester memcached ou de tout serveur par le script ci-dessous
si elle retourne 0 alors le serveur est en cours d'exécution ou si 1 de ses pas, donc si vous voulez savoir que le serveur est en cours d'exécution sur un port utiliser le script suivant
De Bash, vous pouvez consulter les statistiques de memcache par cette commande:
Pour vider le cache, l'utilisation
memflush
commande:et de vérifier si les stats augmenté.
De vider tous les objets mis en cache, l'utilisation
memdump
oumemcdump
de commande (partie dememcached
/libmemcached
paquet):ou:
Si vous utilisez PHP, pour voir si est pris en charge, consultez par:
php -i | grep memcached
.Traçage
De vérifier ce que memcached processus est exactement le traitement, vous pouvez utiliser des renifleurs de réseau ou des débogueurs (par exemple
strace
sur Linux oudtrace
/dtruss
sur Unix/OS X) pour cela. De vérifier certains des exemples ci-dessous.Strace
Pour le format de sortie dans une meilleure façon, vérifier: Comment analyser strace dans le shell en texte brut?
Dtruss
Dtruss est un dtrace wrapper qui est disponible sur les systèmes Unix. Exécuter en tant que:
Tcpdump
yum install memdump
et qui a échoué.memdump
fait partie dememcached
(oulibmemcached
), essayez donc de:yum install memcached
.memcdump
.Pouvez-vous utiliser curl pour récupérer une page d'une centaine de fois et de temps les résultats? Vous pouvez consulter également l'exécution d'un processus sur le serveur qui simule lourdes CPU/disque de charge tout en faisant cela.
J'ai écrit un
expect
scriptis-memcached-running
qui teste si memcached est en cours d'exécution sur un ordinateur hôte/port (exécuter en tant qu'is-memcached-running localhost 11211
):Si vous exécutez votre système à partir d'un
Makefile
règle, vous pourriez faire de votre démarrage dépendent d'une cible, qui affirme qu'il est en place et en cours d'exécution (ou vous aide à obtenir de l'état). Il est verbeux lors de la vérification échoue à rendre facile pour nous de débogage échoué ci s'exécute, installe memcached quand il est absent, et est bref et au point autrement:À partir de la ligne de commande, essayez de commande ci-dessous
echo stats | nc 127.0.0.1 11211*
Si elle ne retourne rien, memcache n'est pas en cours d'exécution. Sinon, il doit retourner un tas de statistiques, y compris la disponibilité (et le succès et l'échec compte)
La référence de l'article est ici,
https://www.percona.com/blog/2008/11/26/a-quick-way-to-get-memcached-status/
subprocess.Popen('echo stats | nc 127.0.0.1 11211', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE )
Je suis en utilisant la Mezzanine et la seule solution qui a fonctionné pour moi a été Jacobs réponse. Afin d'arrêter le démon et l'exécution de
memcached -vv
Suivantes Aryashree la poste, ce qui m'a aidé à obtenir un message d'erreur si memcached pas exécuté localement: