AWS RDS Proxy连接成功数分钟后出现SSL连接意外关闭错误排查求助
RDS Proxy连接空闲超时触发
RDS Proxy默认会在连接空闲300秒后主动关闭连接。如果你的Python应用用了连接池(比如SQLAlchemy的连接池),且没有配置连接失效检测,当应用复用这些已被Proxy关闭的连接时,就会抛出SSL连接意外关闭的错误。PostgreSQL端SSL超时设置
Postgres的ssl_timeout参数默认是5分钟,会自动切断长时间无活动的SSL连接。如果你的应用连接在这段时间内没有执行任何查询,数据库会主动终止连接,应用再次使用该连接时就会触发错误。网络层临时中断
VPC安全组、NACLs规则的临时变更,或者AWS内部网络波动,都可能导致Proxy和数据库之间的SSL连接被意外切断。比如安全组临时拦截了5432端口的流量,或是网络链路丢包引发连接重置。连接池配置不匹配
若SQLAlchemy的pool_recycle参数设置值大于RDS Proxy或Postgres的超时时间,连接池不会主动回收失效连接。当应用从池中取出已被远端关闭的连接时,就会出现该错误。比如pool_recycle设为3600秒,但Proxy超时仅300秒,就会导致失效连接留在池内被复用。RDS Proxy后台维护
RDS Proxy偶尔会进行后台维护操作(如版本更新、故障转移),过程中会主动关闭现有连接。如果应用没有实现自动重连逻辑,就会捕获到SSL连接关闭的错误。SSL证书异常
若应用使用的SSL证书过期,或是RDS Proxy更新证书后应用未同步信任新证书,在连接复用阶段可能出现SSL握手失败,进而导致连接被关闭。这种情况通常初始连接就会报错,但如果证书在运行过程中过期,也可能延迟触发错误。
内容的提问来源于stack exchange,提问作者Roman

