如何在本地开发机器上使用 node_redis 重现读取 ETIMEDOUT?

如何在本地开发机器上使用 node_redis 重现读取 ETIMEDOUT?

Redis connection to xxxx:xxxx failed - connect ETIMEDOUT我在使用以下代码的 node.js 应用服务器上定期收到错误:node_redis连接到 redis 服务器。(服务器位于云环境中,错误发生在午夜左右 - 我假设是某种网络中断)。

该应用程序似乎不能很好地处理这种情况,我正尝试在本地重新创建该场景以尝试改善情况。

但是,我无法ETIMEDOUT通过模拟问题的步骤导致问题。我怀疑这可能与应用程序和 redis 都驻留在同一个开发机器上有关,或者可能是因为开发环境是 windows 而生产环境是 linux。

有人可以建议我如何ETIMEDOUT在本地重现该错误吗?

答案1

如果它是您尝试调试的应用程序或使其正确处理错误,请使其连接到虚假的 redis 服务器(例如在您的 Linux 机器 IP.AD.RE.SS:61610 上)并使用 iptables 将数据包丢弃到该端口。丢弃,不要拒绝(iptables -A INPUT -p tcp --dport 61610 -j DROP。当尝试连接到虚假服务器时,这应该会在本地为您提供 ETIMEDOUT。如果您只是想要随机超时,您也可以从 iptables 中执行此操作(仅将一些连接转发到真正的 redis 服务并丢弃其余部分)

相关内容