Tüm web sunucusunu yeniden başlatmadan memcache nasıl yeniden başlatılır / silinir?


47

/opt/eduserver/eduserver bana seçenekler verir:

Kullanım: / opt / eduserver / eduserver {start | stop | startphp | startwww | startooo | stopphp | stopwww | stopooo | restartphp | restartwww | restartooo | status | restart | force-resoad}

memcache php modülü olduğu memcache.iniyerde /opt/eduserver/etc/php/conf.d.

Memcache'i komut satırından silmek istiyorum. Bir şekilde web sunucusunun başka bir bölümüne 'dokunmadan' yapabilir miyim?

Yanıtlar:


94

Evet. memcache'i temizleyebilirsiniz. Deneyin:

telnet localhost 11211
flush_all
quit

memcache localhost 11211'de çalışmıyorsa, ayarlamanız gerekecektir.


3
Bunu etkileşimli olarak yapabilir miyim?
Radek

2
Bunun gerçekten etkili olduğunu doğrulamaya çalışıyorum. Şimdiye kadar istatistikler hala total_items 3926 gösteriyor. Total_items'in 0'a düşmesini bekliyordum. Önbelleğin temizlendiğini doğrulamak nasıl bir şey değil mi?
Danny Armstrong,

4
@DannyArmstrong, floş yalnızca öğeleri süresi dolmuş olarak işaretler. Memcache, performans nedenleriyle süresi dolmuş öğeleri hemen önbellekten kaldırmaz. Zaman aşımına
uğramış öğelere

@TerryE - "Süresi dolmuş öğeleri alabilirsiniz" yerine "Süresi dolmuş öğeleri alamazsınız" mı demek istiyorsunuz?
Brian Matthews

Evet ediyorum. Üzgünüm
TerryE

40

Bu netcat kullanarak da çalışacak

echo "flush_all" | nc -q 2 localhost 11211 

O zaman "Tamam" ı bekleyin.


4
printf "flush_all\nquit\n" | nc -q -1 127.1 11211
kodlanmamış

3
OSX zaman aşımı için echo "flush_all" | nc -w 2 localhost 11211
-w'ye

çıkın ve bekleyin:printf "flush_all" | nc localhost 11211
Gianfranco P.

23

memcflush memcache araçlarında istediğiniz şey:

memcflush --servers=localhost:11211

localhostSunucunuz ne olursa olsun ile değiştirin .

Memcache araçları sunucuya yüklenmemiş olabilir, Debian tabanlı bir işletim sistemi kullanıyorsanız, aşağıdaki gibi yükleyebilirsiniz:

sudo apt-get install libmemcached-tools

2
Red Hat dağıtımlarında, yardımcı programa dahil edilmiştir libmemcached.
Kevin

8

Bash'de bu süslü sözdizimini kullanabilirsiniz:

echo flush_all > /dev/tcp/localhost/11211

Aksi halde memflushkomut kullanın:

memflush --servers=localhost

Telnet ve nc sunucularımızda bulunmadığı için ilk çözüm iyi çalışıyor, teşekkürler.
Getz

4

Aksine zaman aşımları için beklemek yerine aşağıdaki komut anlık yapabilirsiniz flush_all ile quitkomuta:

printf "flush_all\r\nquit\r\n" | nc localhost 11211

Alternatif olarak, sahip değilseniz nc:

printf "flush_all\r\nquit\r\n" > /dev/tcp/127.0.0.1/11211

Bu yöntem bir çıktı üretmese de stats, cmd_flusharttığını görmek için kontrol ederek çalıştığını doğrulayabilirsiniz .


3

(sleep 2; echo flush_all; sleep 2; echo quit; ) | telnet 127.0.0.1 11211

etkileşimli olmayan bir şekilde çalıştırmak istiyorsanız

@heiko sayesinde


Bu benim için işe yaradı, çünkü nc. Note that I worked fine for me without either the initial uyumak istemediğim bir evsahibim vardı ya da final quit. Yaptığım( echo 'flush_all' ; sleep 2 ) | telnet myhost.fqdn.com 11211
Joshua Huber

0

memcached'e bağlanmak için bir soket kullanıyorsanız, sözdizimi

echo "flush_all" | nc -U ~/memcached.sock

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.