Problem with Redis after migrations (ECONNRESET)
Hi!
I have a serivce with Medusa.js (Node), Redis and Postgres which I've had since september. I've had no problems with this service before, but after I migrated to the new databases I have gotten a problem where the service sometimes stops working (not immediately, but after a while, seemingly at random times). It doesn't crash but the API just times out or gets 404.
I've found the logs which I think are the culprit, but I still haven't found a solution yet. It might have something to do with Redis timing out or hitting memory limits perhaps? Just a guess from my part so far. Here are the logs:
32 Replies
Project ID:
9b3bd973-ba5c-4ef3-9f43-32f499f7ba19
9b3bd973-ba5c-4ef3-9f43-32f499f7ba19
FYI I've started experiencing this recently as well, with a PG instance - did not used to have these issues before
Hm, really strange. It really messes our product up at the moment
I'm not experiencing it on both my services, so could be an app layer issue but didn't use to happen 🤷♂️
often times this happens when you aren't closing connections and the idle timeout is reached
On my end my websockets are maybe suspicious, i'll take a look at some websocket settings
for postgres pooled clients specifically this is solved by setting the pool minimum to 0 so that all connections are released and marked as closed
Where do I set that?
your issue looks to be with redis, either way you would need to reference the documentation for your database client
Ah true, is there a similar pool minimum setting for Redis?
not sure, you would need to reference the documentation for your database client
That is Medusa then you mean in my case?
medusa is not a database client, the redis npm package is
Okey, will check there
Thank you for the help Brody!
If the connections to the DB are idle that means there are no DB operations? I should be having constant traffic 🤔 maybe I'm having some other underlying issue.
Or I am missunderstanding. Nonetheless trying to put min:0 and hoping for the best! 😄
what tech stack are you using?
nestjs with socketio and typeorm to connect to PG
I'm suspicious of socketio as well
does typeorm have a pool.min setting?
They have a poolSize which is max, but they also accept extra and pass it onto the underlying driver. So that should accept min I believe
whats the underlying driver in use?
pg
and as you say that, realizing that maybe it doesn't have a min setting and I need to use the idleTimeoutMillis
or allowExitOnIdle
allowExitOnIdle seems like what we want
Thank you for the help, I'll try it out!
let me know how that goes!
the problem inside is the proxy with tcp protocol
sorry but the issue here does not lie with railway, they have internal monitoring for these kinds of things and nothing has been reported. these errors are due to how the client is handling connections
WHat do you know!
@Rasmus Lian I have the same issue with medusa, only started since we migrated. Have you found a solution?
@latrapo Yes I solved it by upgrading Medusa and Redis services I think (cache service and notification provider) and make sure the Redis config is correct. I think that was it, I am afk atm so cant give you more atm
Thanks! Will try doing that in the mean time 🙏
make sure you aren't keeping any idle connections around and are sure to close a connection when done with it