我有一个运行 MySQL 和 Redis 的 Compute Engine 虚拟机,以及一个连接到这些数据库的 Cloud Run 服务。我最近从使用 VPC 连接器 改为使用 直接 VPC 出口,并且我开始遇到间歇性连接问题:
File "uvloop/loop.pyx", line 2039, in create_connection
File "uvloop/loop.pyx", line 2016, in uvloop.loop.Loop.create_connection
TimeoutError: [Errno 110] Connection timed out
My Cloud Run 服务正在运行 Python API,它使用 aiomysql 连接到 MySQL,使用 redis 连接到 Redis。在这两种情况下,我偶尔收到上述连接超时错误。
我注意到,当云运行服务启动更多容器时,这种情况往往会发生。这是否可能是由于为云运行服务保留静态内部 IP 地址的延迟造成的?
我还有一个防火墙策略,允许基于网络标签访问虚拟机 - 防火墙获取网络标签是否可能存在延迟?
回到这里..事实证明,问题是新保留的内部IP地址没有足够快地获得网络标签和/或防火墙策略没有足够快地检测到它们。修改防火墙规则以允许整个 CIDR IP 范围,这样它就不再依赖网络标记了。自从这次改变以来,没有出现过任何问题。