我正在运行 Amazon Web Services RDS Aurora 5.6 数据库集群。有几个 lambda 与这些数据库实例对话,它们都是用 python 编写的。现在一切运行良好,但突然之间,从几天前开始,python 代码有时会开始抛出以下错误:
[ERROR] InterfaceError: 2003: Can't connect to MySQL server on 'CLUSTER-DOMAIN:3306' (-3 Temporary failure in name resolution)
这种情况每 1000 个左右的新连接就会发生 1 个。有趣的是,最近几天我没有接触过整个服务(自从它开始发生以来)。所有 lambda 都使用官方 MySQL 连接器客户端,并使用以下代码段在每次初始化时进行连接:
import mysql.connector as mysql
import os
connection = mysql.connect(user=os.environ['DATABASE_USER'],
password=os.environ['DATABASE_PASSWORD'],
database=os.environ['DATABASE_NAME'],
host=os.environ['DATABASE_HOST'],
autocommit=True)
Run Code Online (Sandbox Code Playgroud)
为了排除这是 Python MySQL 客户端中的问题,我添加了以下内容来解析主机:
import os
import socket
host = socket.gethostbyname(os.environ['DATABASE_HOST'])
Run Code Online (Sandbox Code Playgroud)
同样在这里,我有时会收到以下错误:
[ERROR] gaierror: [Errno -2] 名称或服务未知
现在我怀疑这与 DNS 有关,但由于我只是使用集群端点,因此我无能为力。有趣的是,我最近在不同地区也遇到了完全相同的问题,使用相同的设置(Aurora 5.6 集群,python 中的 lambda 连接到它)并且在那里发生了同样的情况。
我已经尝试重新启动集群中的所有机器,但问题似乎仍然存在。这真的是DNS问题吗?我能做些什么来阻止这种情况发生?
python amazon-web-services amazon-rds aws-lambda amazon-aurora