Heroku nodejs 应用程序在连接到 heroku-redis 时出现 503 错误
Heroku nodejs app gets 503 error when connecting to heroku-redis
我在 heroku 上有一个 nodejs API 应用程序 运行ning,当此应用程序尝试连接到 heroku-redis 或 [=21= 上的另一个 redis 服务器时,我收到服务不可用 503 错误] (我尝试了两个 redis 服务器,看看它是否会有所作为)。我有一个免费的 heroku 开发帐户用于此 nodejs API 应用程序和 heroku-redis 附加组件。也许我需要一个静态 IP 才能让免费的 heroku 应用程序连接到 heroku-redis?不确定。
这是我在 heroku 上查看我的应用程序日志时看到的内容:
2022-02-05T18:30:24.003600+00:00 app[web.1]: > start
2022-02-05T18:30:24.003601+00:00 app[web.1]: > node app.js
2022-02-05T18:30:24.003601+00:00 app[web.1]:
2022-02-05T18:30:26.254765+00:00 heroku[web.1]: State changed from starting to up
2022-02-05T18:31:03.724181+00:00 app[web.1]: Starting RXNsetup app
2022-02-05T18:31:03.725096+00:00 app[web.1]: Start Redis connection
2022-02-05T18:31:33.716830+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/run" host=rxnsetup.herokuapp.com request_id=c983d257-8773-4fff-a4d1-4b74341366b6 fwd="190.111.231.94" dyno=web.1 connect=0ms service=30176ms status=503 bytes=0 protocol=https
2022-02-05T18:30:00.000000+00:00 app[heroku-redis]: source=HEROKU_REDIS_CRIMSON addon=redis-symmetrical-62029 sample#active-connections=1 sample#load-avg-1m=1.105 sample#load-avg-5m=0.96 sample#load-avg-15m=0.6 sample#read-iops=0 sample#write-iops=0 sample#memory-total=15619136kB sample#memory-free=10625808kB sample#memory-cached=2390936kB sample#memory-redis=333744bytes sample#hit-rate=1 sample#evicted-keys=0
上面的第一个日志语句引用了另一个 nodejs 应用程序,该应用程序向 heroku 上 运行 的 nodejs API 应用程序发出 POST HTTP 请求。当我在本地点击相同的 nodejs API 应用程序时,我能够很好地连接到我的 redis 服务器,但是由于某种原因,当在 heroku 中使用相同的 nodejs 应用程序 运行s 时,我收到 503 错误。我已经在 heroku 中配置了所有相同的环境变量,就像我在本地所做的那样。我已经研究了一段时间,但仍然无法确定可能导致此 503 错误的原因。
更新:
根本问题似乎首先是我有多个 heroku-redis 运行ning 实例,因此我需要将一个实例提升为主实例。然后另一个问题是 REDIS_URL 环境变量在 运行 时被评估为未定义,这导致我收到 503 服务错误。
我怀疑您正在查看过时的连接字符串。
HEROKU_REDIS_<color>
variables are normally only used if you have multiple deployments:
Heroku creates the REDIS_URL
config var to store the location of the primary instance. In single-instance setups, your new instance is assigned a REDIS_URL
. In cases where REDIS_URL
exists, your instance is assigned a HEROKU_REDIS_<color>
URL instead.
通常情况下,即使您有多个实例,您仍然会连接到 REDIS_URL
,而不是 HEROKU_REDIS_<color>
。您可以通过 运行
promote a HEROKU_REDIS_<color>
URL to REDIS_URL
heroku redis:promote HEROKU_REDIS_<color>
更新您的应用程序以使用 REDIS_URL
、review your addons 以查看您是否配置了多个 Redis 服务,并决定保留哪些。然后将其变量提升为REDIS_URL
如上
我在 heroku 上有一个 nodejs API 应用程序 运行ning,当此应用程序尝试连接到 heroku-redis 或 [=21= 上的另一个 redis 服务器时,我收到服务不可用 503 错误] (我尝试了两个 redis 服务器,看看它是否会有所作为)。我有一个免费的 heroku 开发帐户用于此 nodejs API 应用程序和 heroku-redis 附加组件。也许我需要一个静态 IP 才能让免费的 heroku 应用程序连接到 heroku-redis?不确定。
这是我在 heroku 上查看我的应用程序日志时看到的内容:
2022-02-05T18:30:24.003600+00:00 app[web.1]: > start
2022-02-05T18:30:24.003601+00:00 app[web.1]: > node app.js
2022-02-05T18:30:24.003601+00:00 app[web.1]:
2022-02-05T18:30:26.254765+00:00 heroku[web.1]: State changed from starting to up
2022-02-05T18:31:03.724181+00:00 app[web.1]: Starting RXNsetup app
2022-02-05T18:31:03.725096+00:00 app[web.1]: Start Redis connection
2022-02-05T18:31:33.716830+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/run" host=rxnsetup.herokuapp.com request_id=c983d257-8773-4fff-a4d1-4b74341366b6 fwd="190.111.231.94" dyno=web.1 connect=0ms service=30176ms status=503 bytes=0 protocol=https
2022-02-05T18:30:00.000000+00:00 app[heroku-redis]: source=HEROKU_REDIS_CRIMSON addon=redis-symmetrical-62029 sample#active-connections=1 sample#load-avg-1m=1.105 sample#load-avg-5m=0.96 sample#load-avg-15m=0.6 sample#read-iops=0 sample#write-iops=0 sample#memory-total=15619136kB sample#memory-free=10625808kB sample#memory-cached=2390936kB sample#memory-redis=333744bytes sample#hit-rate=1 sample#evicted-keys=0
上面的第一个日志语句引用了另一个 nodejs 应用程序,该应用程序向 heroku 上 运行 的 nodejs API 应用程序发出 POST HTTP 请求。当我在本地点击相同的 nodejs API 应用程序时,我能够很好地连接到我的 redis 服务器,但是由于某种原因,当在 heroku 中使用相同的 nodejs 应用程序 运行s 时,我收到 503 错误。我已经在 heroku 中配置了所有相同的环境变量,就像我在本地所做的那样。我已经研究了一段时间,但仍然无法确定可能导致此 503 错误的原因。
更新:
根本问题似乎首先是我有多个 heroku-redis 运行ning 实例,因此我需要将一个实例提升为主实例。然后另一个问题是 REDIS_URL 环境变量在 运行 时被评估为未定义,这导致我收到 503 服务错误。
我怀疑您正在查看过时的连接字符串。
HEROKU_REDIS_<color>
variables are normally only used if you have multiple deployments:
Heroku creates the
REDIS_URL
config var to store the location of the primary instance. In single-instance setups, your new instance is assigned aREDIS_URL
. In cases whereREDIS_URL
exists, your instance is assigned aHEROKU_REDIS_<color>
URL instead.
通常情况下,即使您有多个实例,您仍然会连接到 REDIS_URL
,而不是 HEROKU_REDIS_<color>
。您可以通过 运行
HEROKU_REDIS_<color>
URL to REDIS_URL
heroku redis:promote HEROKU_REDIS_<color>
更新您的应用程序以使用 REDIS_URL
、review your addons 以查看您是否配置了多个 Redis 服务,并决定保留哪些。然后将其变量提升为REDIS_URL
如上