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

如何在AWS Lambda中访问Memcache?连接超时无报错问题排查

故障排查方向
  • VPC网络配置问题

    AWS ElastiCache Memcached 是部署在私有VPC内的服务,默认不允许公网访问。如果Lambda函数没有配置和Memcached实例相同的VPC,无法建立网络连接,客户端会一直尝试握手最终导致函数超时,memcache-plus默认未设置连接超时时间,所以不会抛出可捕获的错误,会直接卡住到函数触发超时。
    检查点:

    1. 确认Lambda执行角色附加了AWSLambdaVPCAccessExecutionRole权限策略
    2. 确认Lambda配置的VPC、子网、安全组和Memcached实例完全一致
  • 安全组规则配置问题
    确认Memcached实例关联的安全组入站规则放开了Lambda对应的安全组的11211端口访问,不要配置公网IP作为源,直接引用Lambda的安全组ID作为入站源即可。
  • 客户端初始化配置问题
    当前代码在Lambda冷启动全局作用域初始化Memcached客户端,且没有配置超时参数,一旦首次连接失败,后续复用执行环境的客户端也会一直处于未就绪状态,建议修改客户端初始化代码增加超时配置:
    const MemcachePlus = require("memcache-plus");
    
    const client = new MemcachePlus({
      hosts: ["test_memcached.cfg.use1.cache.amazonaws.com:11211"],
      // 连接超时时间设置为1.5秒,避免长时间等待导致函数超时
      connectTimeout: 1500,
      // 关闭自动重连,避免错误时无限重试
      autoreconnect: false
    });
    exports.index = async (event) => {
        try {
          await client.set("firstName", "Victor", 10000);
          console.log("Successfully set the key firstName");
    
          const firstName = await client.get("firstName");
          console.log(`Successfully got the key firstName: ${firstName}`);
        } catch (e) {
          console.log("error", e);
          // 出错后销毁客户端,下次执行重新初始化
          client.disconnect();
        }
    }
    
  • 函数超时时间设置过短
    确认Lambda函数的超时时间设置大于3秒,首次冷启动连接Memcached需要额外的握手时间,如果超时设置低于3秒会直接在首次连接时触发超时。

内容的提问来源于stack exchange,提问作者Pat Cummins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:27:05