使用两台服务器连接到同一个Aurora数据库时,我遇到了上述错误。
我们在Elastic Beanstalk上运行一个简单的Django REST Framework,它连接到Aurora数据库集群。每当我们启动数据库并从EBS服务器连接测试API时都会很好。但是,如果我然后启动连接到同一个数据库的本地开发服务器,则在本地服务器上转到相同路由时会出现操作错误。
- 我已经尝试以增量为单位增加'connect_time','interactive_timeout','max_execution_time','wait_timeout','max_allowed_packet'和'max_user_connections'。没变。
- 查询不应该很大,因为表中只有大约20个项目,而且大多数时候我们查询一个项目。
- 我们不是在任何地方手动管理连接,因此我们不会意外地过早关闭连接。
- 我已经挖掘了MySQL日志,只发现了以下消息:
中止连接##到db:'db_name'用户:'用户名'主机:'host_ip'(读取通信包时出错)。这似乎是非常通用的,并暗示开发服务器上的某些东西正在关闭连接。
- 让开发服务器停止抛出此异常的唯一方法是重启Aurora数据库。
- Django数据库设置将CONN_MAX_AGE设置为0,这对我来说是最有意义的。
- 我创建了一个新的Aurora数据库实例,其中包含新的迁移和表中的一个条目,但问题相同。
另外,如果我打开Django shell并使用模型运行简单查询,那么Beanstalk服务器将开始抛出InterfaceError(0,'')。在Aurora数据库重新启动之前,这一直存在。
我已经挖掘了很多来源,但尚未找到修复方法。其他人有一些想法吗?
版本信息
- Django == 2.1.5
- Django REST框架== 3.9.1
- MySQL兼容性引擎== 5.7.12