如何在不重新启动整个Web服务器的情况下重新启动/清除内存缓存?


47

/opt/eduserver/eduserver 给我选择:

用法:/ opt / eduserver / eduserver {开始|停止|开始php |开始www | startooo |停止php |停止www | stopooo |重新启动php |重新启动www | restartooo |状态|重新启动|重新加载|强制重新加载}

其中,内存缓存为PHP模块有memcache.ini/opt/eduserver/etc/php/conf.d

我想从命令行清除内存缓存。我可以以某种方式执行此操作而无需“触摸” Web服务器的任何其他部分吗?

Answers:


94

是。您可以清除内存缓存。尝试:

telnet localhost 11211
flush_all
quit

如果内存缓存未在本地主机11211上运行,则必须对其进行调整。


3
我可以非交互式地执行此操作吗?
Radek

2
我正在尝试验证这确实有效。到目前为止,统计信息仍然显示total_items3926。我期望total_items降至0。这不是如何验证是否刷新了缓存吗?
Danny Armstrong

4
@DannyArmstrong,刷新仅将项目标记为过期。由于性能原因,Memcache不会立即从缓存中删除过期的项目。您可以获得过期的物品,因此从API角度来看它们已经消失了
TerryE 2014年

@TerryE-您的意思是说“您无法获得过期的物品”,而不是“您可以获取过期的物品”?
Brian Matthews

是的,我愿意。抱歉
TerryE

40

使用netcat也可以使用

echo "flush_all" | nc -q 2 localhost 11211 

然后,只需等待“确定”即可。


4
不包含2秒钟的硬编码:printf "flush_all\nquit\n" | nc -q -1 127.1 11211
youfu 2015年

3
OSX需要-w来进行超时:echo "flush_all" | nc -w 2 localhost 11211
mahemoff

w / o退出并等待:printf "flush_all" | nc localhost 11211
Gianfranco P.

23

memcflush 在memcache工具中是您想要的:

memcflush --servers=localhost:11211

更改localhost为您的服务器。

内存缓存工具可能未安装在服务器上,如果您正在运行基于Debian的操作系统,则可以按以下方式安装它:

sudo apt-get install libmemcached-tools

2
在Red Hat发行版中,该实用程序包含在中libmemcached
凯文

8

在Bash中,您可以使用以下奇特的语法:

echo flush_all > /dev/tcp/localhost/11211

否则使用memflush命令:

memflush --servers=localhost

由于telnet和nc在我们的服务器上不可用,因此第一个解决方案可以正常工作,谢谢。
Getz

4

而不是等待超时您可以通过以下使命令瞬间flush_allquit命令:

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

或者,如果您没有nc

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

尽管此方法不会产生输出,但是您可以通过检查stats看是否cmd_flush增加来验证它是否有效。


3

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

如果您想非交互式地运行它

感谢@heiko


这对我nc. Note that I worked fine for me without either the initial 有用,因为我有一个主机,我不想安装sleep或final quit。我做到了( echo 'flush_all' ; sleep 2 ) | telnet myhost.fqdn.com 11211
Joshua Huber

0

如果您使用套接字连接到memcached,则语法为

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.