gpt4 book ai didi

azure - 来自 Azure 应用服务的 ioredis ETIMEDOUT,但在本地工作正常,IP 已添加到防火墙

转载 作者:行者123 更新时间:2023-12-02 06:59:55 26 4
gpt4 key购买 nike

我有一个 Azure Redis 缓存,目前正在测试。除了我现在正在尝试做的事情之外,它没有被使用/没有任何东西连接到它。它是最基本的 C0 计划的一部分。

问题是,一旦部署为 Azure 应用服务的一部分,它就会不断抛出:

[ioredis] Unhandled error event: Error: connect ETIMEDOUT
at TLSSocket. (/home/site/wwwroot/node_modules/ioredis/built/redis/index.js:282:31)
at Object.onceWrapper (events.js:273:13)
at TLSSocket.emit (events.js:182:13)
at TLSSocket.Socket._onTimeout (net.js:449:8)
at ontimeout (timers.js:425:11)
at tryOnTimeout (timers.js:289:5)
at listOnTimeout (timers.js:252:5)
at Timer.processTimers (timers.js:212:10)

如果我在本地运行该应用程序,一切都很好并且工作正常。我也将本地 IP 和应用程序服务的 IP 添加到防火墙中。

我的配置是:

 host: this.get('REDIS_HOST'),
port: 6380,
password: this.get('REDIS_PRIMARY_KEY'),
tls: true as any,
connectTimeout: 1000,

import * as redis from 'ioredis';
redis: redis.Redis;

in constructor:

this.redis = new redis(this.configService.getRedis());

最佳答案

我尝试在我的环境中重现您的问题,然后我发现这似乎是由于 connectTimeout 值太短且短于默认值 10000 造成的export const DEFAULT_REDIS_OPTIONS: IRedisOptions 中定义的 connectTimeout如下。

export const DEFAULT_REDIS_OPTIONS: IRedisOptions = {
// Connection
port: 6379,
host: "localhost",
family: 4,
connectTimeout: 10000,
//.....
}

如果我将 connectTimeout 值设置为 1000 甚至 100,我会在我的环境中遇到与您相同的问题,因为如下图。

enter image description here

因此,请尝试删除 connectTimeout 属性并使用默认值,或者只是设置一个比默认值更长的超时值。

关于azure - 来自 Azure 应用服务的 ioredis ETIMEDOUT,但在本地工作正常,IP 已添加到防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com