2010-07-20 7 views
4

J'utilise mon application rails en mode production et en mode de transfert sur le même serveur, dans différents dossiers. Ils utilisent tous les deux memcache-client qui nécessite que memcached soit en cours d'exécution. Pour l'instant, je n'ai pas configuré de script de déploiement et je fais donc un déploiement manuel en accédant au serveur, en allant dans le répertoire approprié, en mettant à jour le code, en redémarrant memcached et en redémarrant unicorn l'application rails). Je redémarre Memcached ainsi:memcached restart démarre un nouveau memcached et ne tue pas l'ancien

sudo /etc/init.d/memcached restart & 

Cela commence une nouvelle memcached, mais il ne tue pas l'ancien: check it out:

ip-<an-ip>:test.millionaire[subjects]$ ps afx | grep memcache 
11176 pts/2 S+  0:00 |   \_ grep --color=auto memcache 
10939 pts/3 R  8:13    \_ sudo /etc/init.d/memcached restart 
7453 ?  Sl  0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1 

ip-<an-ip>:test.millionaire[subjects]$ sudo /etc/init.d/memcached restart & 
[1] 11187 

ip-<an-ip>:test.millionaire[subjects]$ ps afx | grep memcache 
11187 pts/2 T  0:00 |   \_ sudo /etc/init.d/memcached restart 
11199 pts/2 S+  0:00 |   \_ grep --color=auto memcache 
10939 pts/3 R  8:36    \_ sudo /etc/init.d/memcached restart 
7453 ?  Sl  0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1 

[1]+ Stopped     sudo /etc/init.d/memcached restart 
ip-<an-ip>:test.millionaire[subjects]$ sudo /etc/init.d/memcached restart & 
[2] 11208 
ip-<an-ip>:test.millionaire[subjects]$ ps afx | grep memcache 
11187 pts/2 T  0:00 |   \_ sudo /etc/init.d/memcached restart 
11208 pts/2 R  0:01 |   \_ sudo /etc/init.d/memcached restart 
11218 pts/2 S+  0:00 |   \_ grep --color=auto memcache 
10939 pts/3 R  8:42    \_ sudo /etc/init.d/memcached restart 
7453 ?  Sl  0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1 

Ce qui pourrait être à l'origine il y a une autre course memcached - voir la ligne du bas. Je suis mystifié quant à d'où cela vient et mon instinct est de le tuer mais je pensais que je ferais mieux de vérifier avec quelqu'un qui en sait plus sur memcached que je fais.

Grateful pour tout conseil - max

EDIT - solution

je me suis dit cela après un peu de travail de détective avec un collègue. Dans la console des rails, j'ai tapé CACHE.stats qui imprime un hachage de valeurs, y compris "pid", que je pouvais voir était l'instance de memcached qui n'a pas été démarré avec memcached restart, c'est à dire:

7453 ?  Sl  0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1 

le script de contrôle memcached (c.-à-qui définit le début, arrêter et redémarrer les commandes), est en /etc/init.d/memcached

Une ligne dans ce dit

# Edit /etc/default/memcached to change this. 
ENABLE_MEMCACHED=no 

Alors j'ai regardé dans /etc/default/memcached, qui a également été mis à ENABLE_MEMCACHED=noDonc, cela empêchait essentiellement memcached d'être arrêté et démarré. Je l'ai changé à ENABLE_MEMCACHED=yes, alors il s'arrêterait et commencerait bien. Maintenant, quand je m'arrête et démarre memcached, c'est le processus ci-dessus, le memcached en cours d'utilisation, qui est arrêté et démarré.

Répondre

8

essayez d'utiliser:

killall memcached 
+1

Merci greg, je sais comment tuer les processus, mais comme je l'ai dit que je voulais savoir ce qui se passe réellement plutôt que de simplement travailler autour d'elle. Je l'ai compris de toute façon, voir EDIT –