From e2962e6528a11b19266cd121e6f5faac378080dc Mon Sep 17 00:00:00 2001 From: Khairul Date: Tue, 7 Apr 2026 12:56:10 +0800 Subject: [PATCH] fix: increase Node keepAliveTimeout behind reverse proxies to prevent 502s - Set server.keepAliveTimeout to 185s to safely outlive default Traefik/AWS ALB idle timeouts (typically 60-180s) - Resolves random "Failed to fetch" edge cases caused by Node.js's notoriously short 5s default timeout Closes #3008 --- server/src/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/src/index.ts b/server/src/index.ts index b417f14c..a384342f 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -542,6 +542,12 @@ export async function startServer(): Promise { resolveSession, }); const server = createServer(app as unknown as Parameters[0]); + + // Increase keep-alive timeouts to safely outlive default idle timeouts + // of common reverse proxies and load balancers (like AWS ALB, Nginx, or Traefik). + // This prevents intermittent 502/ECONNRESET errors caused by Node's 5s default. + server.keepAliveTimeout = 185000; + server.headersTimeout = 186000; if (listenPort !== config.port) { logger.warn(`Requested port is busy; using next free port (requestedPort=${config.port}, selectedPort=${listenPort})`);