我在heroku上运行了一个nodejs应用程序,当这个应用程序试图连接到heroku或redislabs.com上的另一个redis服务器时,我得到了一个服务不可用的503错误(我尝试了这两个redis服务器,看看它是否会产生影响)。我有一个免费的heroku帐户,用于这个nodejs应用程序和heroku插件。也许我需要一个静态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应用程序发出POST HTTP请求。当我在本地访问同一个nodejs应用程序时,我能够很好地连接到我的redis服务器,但是由于某种原因,当相同的nodejs应用程序在heroku中运行时,我会得到503个错误。我在heroku中配置了所有相同的环境变量,就像我在本地所做的那样。我已经研究了很长一段时间了,但是我仍然坚持到底是什么导致了这个503的错误。
更新:
根本的问题是,首先,我有多个heroku-redis实例在运行,所以我需要将一个实例提升为主实例。然后,另一个问题是在运行时将REDIS_URL环境变量评估为未定义的变量,这将导致我得到的503个服务错误。
发布于 2022-02-05 19:51:38
我怀疑你在看一条陈旧的连接线。
Heroku创建
REDIS_URL配置变量来存储主实例的位置。在单实例设置中,将为新实例分配一个REDIS_URL。在存在REDIS_URL的情况下,将为实例分配一个HEROKU_REDIS_<color>URL。
通常,即使您有多个实例,您仍然会连接到REDIS_URL,而不是HEROKU_REDIS_<color>。您可以通过运行REDIS_URL
heroku redis:promote HEROKU_REDIS_<color>更新应用程序以使用REDIS_URL和检查您的插件,以查看是否提供了多个Redis服务,并决定保留哪个服务。然后将其变量提升到上面所述的REDIS_URL。
https://stackoverflow.com/questions/71001078
复制相似问题