【问题标题】:Can't connect to memcached server on localhost, how to debug?无法连接到本地主机上的 memcached 服务器,如何调试?
【发布时间】:2023-04-11 09:50:01
【问题描述】:

我正在运行 memcached,但无法连接。我应该如何开始调试呢?似乎有什么东西阻止了我的连接。

ps -elf | grep 内存缓存 0 S lee 10744 529 0 80 0 - 30529 ep_pol 03:36 pts/22 00:00:00 /usr/bin/memcached -m 512 -p 11211 -u nobody -l 127.0.0.1

(Memcached 肯定在运行)

但是当我尝试远程登录时,我得到了超时。

远程登录 127.0.0.1 11211 正在尝试 127.0.0.1... telnet:无法连接到远程主机:连接超时

任何建议将不胜感激。

【问题讨论】:

  • 您的防火墙正在运行?

标签: memcached telnet


【解决方案1】:

确保本地环回网络接口正在运行。听起来您使用的是 Unix 系统,因此我建议您运行 /sbin/ifconfig 以查看带有 IP 地址(标记为 inet addr)127.0.0.1 的标记为 lo 的部分是否已启动并正在运行。如果没有,运行 ifdown lo 然后 ifup lo,这应该可以开始了。阅读您的 /etc/hosts 文件以确保 localhost 或您的机器名称绑定到 127.0.0.1。如果您的机器使用 ipchains 或 iptables,请确保将它们配置为让流量从 127.0.0.1 传递到 127.0.0.1

这些事情在 99% 的情况下都很好,但无法连接到 localhost 确实很奇怪,因此需要进行健全性检查。

【讨论】:

  • 作为另一个健全性检查,确保 memcached 配置没有更改。看起来 11211 是默认端口,但也许有人在你身上改变了它。然而,这种错误配置通常会导致连接失败消息而不是连接超时消息。
  • 作为第二次健全性检查,确保您的 etc/hosts 有一个 localhost 条目(“127.0.0.1 localhost”)。在我在记事本中粘贴文档时不小心清空了主机配置后,我的工程团队仍在笑。
【解决方案2】:

确保您没有启用任何防火墙。就我而言,我发现了iptables 的以下条目:

target     prot opt source                destination
ACCEPT     tcp  --  example.com.internal  anywhere             tcp dpt:11211
ACCEPT     udp  --  example.com.internal  anywhere             udp dpt:11211
DROP       tcp  --  anywhere              anywhere             tcp dpt:11211
DROP       udp  --  anywhere              anywhere             udp dpt:11211

它们只允许来自example.com.internal 的连接,而拒绝来自其他任何地方的连接,包括localhost。为了解决这个问题,我为 localhost 添加了特定规则:

ACCEPT     tcp  --  localhost             anywhere             tcp dpt:11211
ACCEPT     udp  --  localhost             anywhere             udp dpt:11211

【讨论】:

    猜你喜欢
    • 2016-02-19
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多