Azure Pipeline(Ubuntu代理)中k6 Redis缓存报未定义错误
k6实验性Redis模块在Azure Pipeline Ubuntu代理池执行时抛出TCP读取错误
问题描述
基于k6/experimental/redis实现Redis缓存,用于在k6脚本的虚拟用户(VU)间共享数据。脚本在本地Windows及WSL环境运行正常,但在Azure Pipeline的Ubuntu代理池中执行时,调用redisClient.set或redisClient.hsetnx会触发未定义错误。
已尝试设置环境变量K6_INSECURE_SKIP_TLS_VERIFY=true,问题未解决。错误出现在第137行首次设置哈希键时,错误信息如下:
{"op":"read","net":"tcp","source":{"ip":[10,116,152,116],"port":64041,"zone":""},"addr":{"ip":[127,0,0,1],"port":6379,"zone":""},"err":{"syscall":"read","err":{}}}
排查与解决方案
- 确认代理池内Redis服务状态:错误显示尝试连接
127.0.0.1:6379,需验证Ubuntu代理虚拟机上Redis服务是否已启动并监听该端口。可在Pipeline步骤中添加redis-cli ping命令,检查服务可达性。 - 检查Redis配置:
- 确认Redis未设置未在脚本中配置的访问密码,若有密码需在Redis客户端初始化时传入认证参数。
- 验证Redis绑定地址配置,确保允许本地连接(默认
127.0.0.1绑定通常没问题,但需确认服务未被配置为仅监听特定网卡)。
- 排查代理池防火墙规则:检查Ubuntu代理的防火墙是否限制了本地TCP连接到6379端口,必要时添加允许规则。
- 对齐k6及模块版本:本地与Azure代理池的k6版本、
k6/experimental/redis模块版本可能存在差异,导致兼容性问题。可在Pipeline中指定与本地一致的k6版本,通过k6 version确认版本后安装对应版本。 - 检查脚本连接配置:若本地使用无TLS的Redis实例,需确认脚本未在Pipeline环境中错误启用TLS连接配置——即使设置了
K6_INSECURE_SKIP_TLS_VERIFY=true,非TLS连接场景下的TLS配置仍会导致连接异常。
内容的提问来源于stack exchange,提问作者Egeon
相关产品推荐
相关产品推荐

