MySQL 通信链路每 61 分钟定期发生故障

MySQL 通信链路每 61 分钟定期发生故障

有趣而奇怪的问题。

有一个生产系统运行分布在多台服务器上的应用程序,所有服务器都对单独的 MySQL 服务器进行读写。

  • MySQL 服务器版本 5.6.31
  • CentOS 7

运行几个小时后,应用程序崩溃,并指出:

<JDBCExceptionReporter.java:233>SQL Error: 0, SQLState: 08S01                                                        
<JDBCExceptionReporter.java:234>Communications link failure

The last packet successfully received from the server was 60,059 milliseconds ago.  The last packet sent successfully to the server was 60,059 milliseconds ago.

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

应用程序在发生这种情况之前运行多长时间似乎很难预测,有时是一天,有时只有几个小时。这个问题会在不同的服务器上的不同时间发生,导致应用程序崩溃,直到最终所有服务器都崩溃。然而,有趣的是:

失败,如果发生,将始终按照可预测的时间表运行,时间表的周期为 61 分钟(在 60 分钟 55 秒和 61 分钟 5 秒之间变化)。因此,例如,我们可能会在以下位置看到故障:

  • 16:01:30
  • 17:02:32
  • 18:03:31
  • 19:04:35
  • 21:06:33

我的问题是:每次发生此类故障都可能是什么原因造成的?61分钟

我们已经查看了大量的东西,但仍然感到困惑,对我来说,关键似乎在于这种奇怪的周期模式,它排除了计划任务,因为它每小时漂移 1 分钟,而所有计划任务都不会这样做。

相关内容