Memcached 问题“无法监听 TCP 端口 11211”

Memcached 问题“无法监听 TCP 端口 11211”

我刚刚在 Mac OS X 10.6.8 上安装了 memcached。它安装得很完美,当我在终端中输入时,memcached我得到了这个:

failed to listen on TCP port 11211 tcp
listen: Address already in use

我的本地主机中有一个包含以下内容的脚本:

$memcache = new Memcache();

但是我收到一条错误消息Fatal error: Class 'Memcache' not found

我怎样才能让 memcached 工作,是不是因为端口 11211 没有被监听,这可能会导致 memcached 无法工作?

答案1

第一个错误可能是因为 memcached 已在运行。如果你运行,ps -e | grep memcache | grep -v grep你可能会看到它。 的输出netstat -a -p tcp | grep LISTEN也会显示所有正在监听的服务,这可能会有所帮助。

第二个问题可能是因为你没有为你的 PHP 版本安装 memcache 扩展(从错误中我假设你使用的是 PHP)。你可能需要http://pecl.php.net/package/memcache来解决这个问题。

答案2

Memcache 可能已在运行。我运行的 memcache 版本崩溃了,因此出现了这个问题。

我发现这很有帮助:

netstat -l --protocol=tcpip --program

一旦我有了 pid,我就终止了 memcache

然后我编辑了配置

vi /etc/sysconfig/memcached

我补充道

OPTIONS="-l 127.0.0.1"

答案3

我也遇到了你报告的第一个错误:

failed to listen on TCP port 11211 tcp
listen: Address already in use

在我的配置中,我发现错误是由-l同一地址的多个参数引起的。在 Ubuntu 上,我的/etc/memcached.conf文件包含:

-l localhost
-l 127.0.0.1

memcached 能够成功绑定到第一个地址,但是由于127.0.0.1重复,当 memcached 尝试绑定到第二个地址时localhost出现错误。Address already in use

如果您遇到此错误并且找不到绑定到您的端口的现有进程,请仔细检查您的 memcached 配置。如果您正在监听多个地址上的连接,请确保这些地址不代表同一个地址。这样的设置可能会导致此错误。

答案4

就我的情况而言,这是因为memcached已在运行。尝试:

$ ps aux | grep memcache | grep -v grep 

jill.doe     93302   0.0  0.0 408916512   1888   ??  Ss   11:39am   0:00.04 memcached

您需要执行以下操作PID来终止该进程:

$ kill 93302

这至少应该可以解决这个failed to listen on TCP port 11211 tcp问题。

相关内容