间歇性的“通信链接故障”

时间:2019-07-10 21:28:57

标签: java mysql spring-boot amazon-rds

不是重复的,所有建议的修复都不能解决我的问题。

添加请求的信息以重新发布问题:

OS:Amazon Linux AMI版本2018.03

Java:1.8-更具体的说,它是OpenJDK build 1.8.0_201-b09

Spring Boot:2.1.2。发布

数据库:AWS RDS MariaDB 5.7.16版

以下是包含MySQL错误日志的要点的链接: https://gist.github.com/urielb/6675ec2a80f5fbca630e52ca0b9d2b2a

在MySQL日志中,我上面提到的崩溃部分之前出现的很多东西是:

2019-07-11T19:26:18.888986Z 791 [Note] Aborted connection 791 to db: 'database' user: 'user' host: 'IP_ADDRESS' (Got an error reading communication packets)

但是除此之外,我在服务器日志中找不到任何内容。

编辑结束#2

在过去的几天里,这让我挠头。

我们有一个Java Spring Boot应用程序,可以访问MySQL数据库。

我们有一个动作,应该在服务器上保存一些数据,有时它可以正常工作,但有时它会失败,但是我仍然无法找到发生这种情况的模式。仅在生产中发生。

除单击按钮外,没有其他用户输入,但是当我们尝试建立与数据库的连接以执行所需的操作时,则连接简单。

public static Connection getConnection()
{
    try
    {
        Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
        Connection conn = DriverManager.getConnection(Conf.getDatabaseConnectionString(), Conf.getDatabaseConnectionUser(), Conf.getDatabaseConnectionPassword());
        return conn;
    } catch (SQLException e)
    {
        logger.error("Failed to establish a connection to the database (SQLException): " + e.getMessage());
        return null;
    }
    ...
}

除了指向生产服务器之外,连接字符串与以下相同。

jdbc:mysql://localhost:3306/database?useSSL=false&allowPublicKeyRetrieval=false

基本上是函数,除了有更多的捕获检查是否无法建立连接,为什么这样做并返回空值。

因此,问题是,此方法通常返回null。起初我以为可能是“ TOO MANY ConnectionS”问题,但经过进一步检查,我意识到事实并非如此。显然它失败并显示

...CJCommunicationsException: Communications link failure. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

但是我真的不知道是什么原因造成的,为什么这个问题是间歇性的?我不知道从哪里开始解决这个问题。我已经实现了一个Hikari连接池,希望这只是连接过多的情况。

我已经阅读了一些文章,建议在MySQL服务器上进行一些配置,特别是关于列表地址和端口,但是使用AWS RDS,我们要做的就是配置安全组,这也无法解决安全性问题。问题...

有人经历过类似的经历吗?我现在愿意接受任何想法或建议。

0 个答案:

没有答案