每隔几天,我们就会得到少量MySql超时错误,这些错误与MySql RDS实例上CPU和DB连接的大峰值相对应。这些查询通常非常快(<5ms),突然超时。
此时,数据库操作会非常慢一分钟左右(可能是因为正在分配新的连接)。新连接的数量经常翻倍,似乎对应于整个连接池被回收。
超时似乎与数据库负载过重无关。CPU通常在7%以下,当这种情况发生时,会飙升到12%左右。
一旦这些连接建立起来,旧的连接似乎会存在几个小时。
我们有一些理论:
- EC2和RDS之间偶尔的网络中断
- 连接池回收(有这样的事情吗?)
- 备份所有查询的服务器上的资源争用(没有死锁存在)
任何调试的帮助都将是非常感谢的。
系统细节:
- Windows 2012 EC2实例
- 。NET 4.5 MySql Connector 6.8.3
- 实体框架6.0.2
- MySql.Data。实体6.8.3
- MySql 5.6.12(主机在Amazon的RDS)
我想把这作为一个评论,而不是一个答案,但"…"必须有50个声望才能评论…"
- 你的连接数达到最大值了吗?显示像'max_connections'这样的变量;显示process_list;(root用户)
- 您的磁盘I/O如何:iostat -x 5通过命令行并特别注意队列大小&服务/等待时间。如果这是一个问题,您可以购买AWS保留的IOPS以获得更好的可靠性。性能。
- 你可以配置它-我喜欢喷气分析器,简单&低负载。