mysql-connector-java-5.1.32有很多无用的连接

mysql-connector-java-5.1.32有很多无用的连接,java,mysql,hibernate,jdbc,Java,Mysql,Hibernate,Jdbc,我使用MySQL-connector-java-5.1.32从应用程序中获得了许多无用的MySQL连接。 MySQL服务器日志如下所示: root@scet-prod-qlik:/var/log/mysql $ tail mysql.log 2021-04-05T08:49:24.306318Z 246109 Query SET character_set_results = NULL 2021-04-05T08:49:25.004308Z 246110 Connect qlik@192

我使用MySQL-connector-java-5.1.32从应用程序中获得了许多无用的MySQL连接。 MySQL服务器日志如下所示:

root@scet-prod-qlik:/var/log/mysql $ tail mysql.log
2021-04-05T08:49:24.306318Z 246109 Query    SET character_set_results = NULL
2021-04-05T08:49:25.004308Z 246110 Connect  qlik@192.168.1.12 on qlik using TCP/IP
2021-04-05T08:49:25.004553Z 246110 Query    SET NAMES utf8mb4
2021-04-05T08:49:25.004724Z 246110 Query    SET character_set_results = NULL
2021-04-05T08:49:25.500181Z 246111 Connect  qlik@192.168.1.12 on qlik using TCP/IP
2021-04-05T08:49:25.500429Z 246111 Query    SET NAMES utf8mb4
2021-04-05T08:49:25.500613Z 246111 Query    SET character_set_results = NULL
2021-04-05T08:49:25.763629Z 246112 Connect  qlik@192.168.1.12 on qlik using TCP/IP
2021-04-05T08:49:25.763942Z 246112 Query    SET NAMES utf8mb4
2021-04-05T08:49:25.764126Z 246112 Query    SET character_set_results = NULL
这是我自己的一个问题的后续问题,该问题因重复而被关闭:

以下是我被指出的解决方案(但它们并没有解决我的问题)

即:

  • 升级我的连接器版本,但这在我的情况下不可行
  • 在jdbc url中添加参数,例如cacheServerConfiguration=YES和useLocalSessionState=YES
  • 解决方案2部分解决了这个问题,就像现在一样,连接查询不那么冗长

    在放置cacheServerConfiguration=YES之前,它看起来像:

    2021-04-03T03:00:00.269907Z     183836 Connect  qlik@192.168.1.11 on qlik using TCP/IP
    2021-04-03T03:00:00.270146Z     183836 Query    /* mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'license' OR Variable_name = 'init_connect'
    2021-04-03T03:00:00.272279Z     183836 Query    /* mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n ) */SELECT @@session.auto_increment_increment
    2021-04-03T03:00:00.272463Z     183836 Query    SET NAMES utf8mb4
    2021-04-03T03:00:00.272557Z     183836 Query    SET character_set_results = NULL
    2021-04-03T03:00:00.272641Z     183836 Query    SET autocommit=1
    2021-04-03T03:00:00.272736Z     183836 Query    select @@session.tx_read_only
    
    2021-04-04T23:49:24.306318Z 246109 Query    SET character_set_results = NULL
    2021-04-04T23:49:25.004308Z 246110 Connect  qlik@192.168.1.12 on qlik using TCP/IP
    2021-04-04T23:49:25.004553Z 246110 Query    SET NAMES utf8mb4
    2021-04-04T32:49:25.004724Z 246110 Query    SET character_set_results = NULL    
    2021-04-04T32:49:25.004924Z 246110 Query    SET autocommit=1
    
    放置cacheServerConfiguration=YES后,它看起来像:

    2021-04-03T03:00:00.269907Z     183836 Connect  qlik@192.168.1.11 on qlik using TCP/IP
    2021-04-03T03:00:00.270146Z     183836 Query    /* mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'license' OR Variable_name = 'init_connect'
    2021-04-03T03:00:00.272279Z     183836 Query    /* mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n ) */SELECT @@session.auto_increment_increment
    2021-04-03T03:00:00.272463Z     183836 Query    SET NAMES utf8mb4
    2021-04-03T03:00:00.272557Z     183836 Query    SET character_set_results = NULL
    2021-04-03T03:00:00.272641Z     183836 Query    SET autocommit=1
    2021-04-03T03:00:00.272736Z     183836 Query    select @@session.tx_read_only
    
    2021-04-04T23:49:24.306318Z 246109 Query    SET character_set_results = NULL
    2021-04-04T23:49:25.004308Z 246110 Connect  qlik@192.168.1.12 on qlik using TCP/IP
    2021-04-04T23:49:25.004553Z 246110 Query    SET NAMES utf8mb4
    2021-04-04T32:49:25.004724Z 246110 Query    SET character_set_results = NULL    
    2021-04-04T32:49:25.004924Z 246110 Query    SET autocommit=1
    
    现在,在将useLocalSessionState=YES设置为

    2021-04-05T07:15:22.853774Z 243663 Connect  qlik@192.168.1.11 on qlik using TCP/IP
    2021-04-05T07:15:22.854052Z 243663 Query    SET NAMES utf8mb4
    2021-04-05T07:15:22.854238Z 243663 Query    SET character_set_results = NULL
    2021-04-05T07:15:27.703694Z 243664 Connect  qlik@192.168.1.11 on qlik using TCP/IP
    2021-04-05T07:15:27.703960Z 243664 Query    SET NAMES utf8mb4
    2021-04-05T07:15:27.704134Z 243664 Query    SET character_set_results = NULL
    
    (自动提交部分不再存在)

    然而,我仍然有这些联系,这是我一开始不想要的

    也许url中的其他参数有助于完全删除这些连接? (但我很害羞,因为我不想冒险造成问题)


    或者告诉我你是否有其他想法……

    在什么意义上是无用的?据我所知,您正在使用默认设置为
    minimumIdle=10
    maximumPoolSize=10
    的HikariCP,这意味着池中始终保留10个连接。如果你想减少这个数字,只需根据你的喜好调整配置。这是一个好的观点,我的设置是:-minimumIdle=10-maximmumpoolsize=48。然而,当我“show processlist;”时,我看到更多的同步连接。这意味着它有时会达到最大400,这会在我们想要访问数据库时导致连接问题。此外,应用程序每天早上5点使用此连接执行一次维护操作,持续20分钟。然后我们就不再需要它了。所以,如果它能在空闲时间完全关闭就好了。我检查了代码内部,我们使用try-with-resources语句来自动关闭已打开的连接,所以我不知道该怎么做..连接池的全部目的是保持连接打开。我不清楚你真正的问题是什么,以及你的意思是“许多无用的MySQL连接”,或者为什么你认为日志语句有问题。如果您认为您的应用程序打开的连接太多,则需要调整池配置(例如,可能您的连接被回收到quick,或者您分配了太多的总连接),并可能查找连接泄漏。感谢Mark,我已经开始调整MinimumPidle和maximumPoolSize值。还有,有没有办法在我的工作完成后关闭游泳池,因为它从早上5点开始,持续20分钟,然后我不需要任何连接,直到第二天。。。