You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js升级至v18.7.0后Memcached连接异常,请求排查与解决

Node.js v18.7.0 下 Memcached 连接 ECONNREFUSED ::1:11211 的问题分析与解决

问题成因

  • Node.js v17及以上版本调整了DNS解析优先级,默认将localhost解析为IPv6地址::1,而旧版本默认优先返回IPv4地址。
  • 本地Memcached服务默认仅监听IPv4的127.0.0.1地址,未开启IPv6监听,导致尝试连接::1:11211时被拒绝。
  • 即使初始连接使用127.0.0.1,memcached包的内部逻辑可能在后续操作中重新解析主机名或沿用默认DNS规则,再次触发IPv6连接尝试。

解决方法

方法1:修改Memcached配置,开启IPv6监听

调整Memcached启动参数,使其同时监听IPv4和IPv6地址:

  • Linux/macOS:修改Memcached配置文件(如/etc/memcached.conf),将-l 127.0.0.1改为-l 127.0.0.1,::1,或直接设置-l 0.0.0.0(监听所有网络地址),随后重启Memcached服务。
  • Windows:在Memcached启动命令中添加-l 127.0.0.1,::1,示例:memcached.exe -l 127.0.0.1,::1。

方法2:强制Node.js使用IPv4优先解析

启动Node.js应用时添加--dns-result-order=ipv4first参数,强制DNS解析优先返回IPv4地址:

node --dns-result-order=ipv4first your-app.js

若使用PM2等进程管理工具,需在启动配置中加入该参数,示例PM2的ecosystem.config.js:

module.exports = {
  apps: [{
    name: 'your-app',
    script: 'your-app.js',
    args: '--dns-result-order=ipv4first'
  }]
};

方法3:配置memcached包强制使用IPv4

创建Memcached实例时,通过family选项指定使用IPv4协议:

const Memcached = require('memcached');
const memcached = new Memcached('127.0.0.1:11211', {
  family: 4 // 强制使用IPv4
});

该配置会让包始终以IPv4地址建立连接,避免触发IPv6解析逻辑。

内容的提问来源于stack exchange,提问作者Alexander Fedorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:57:21