Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复';最大用户连接数';MySQL中的问题?_Java_Mysql_Spring Boot_Deployment_Hikaricp - Fatal编程技术网

Java 如何修复';最大用户连接数';MySQL中的问题?

Java 如何修复';最大用户连接数';MySQL中的问题?,java,mysql,spring-boot,deployment,hikaricp,Java,Mysql,Spring Boot,Deployment,Hikaricp,我使用一个名为Mochahost的部署平台,我通常将war文件放在服务器上,以部署我的Spring Boot应用程序,就像我一直做的那样 但最近,我在部署过程中遇到了以下错误: [mysqluser]已经有超过“max\u user\u connections”个活动连接 是否有人知道部署应用程序时会发生什么,为什么同时有这么多连接,而我只是部署一个应用程序而不是插入数据 该项目是一个SparingBoot应用程序,因此默认情况下,我将HikariCP用于连接池。 我是唯一连接到数据库的用户 我

我使用一个名为Mochahost的部署平台,我通常将war文件放在服务器上,以部署我的Spring Boot应用程序,就像我一直做的那样

但最近,我在部署过程中遇到了以下错误:

[mysqluser]已经有超过“max\u user\u connections”个活动连接

是否有人知道部署应用程序时会发生什么,为什么同时有这么多连接,而我只是部署一个应用程序而不是插入数据

该项目是一个SparingBoot应用程序,因此默认情况下,我将HikariCP用于连接池。 我是唯一连接到数据库的用户

我没有声明一些JPA持久化单元

这是mvn清洁安装的登录信息

2021-02-21 14:50:40.153信息4792---[task-1]com.zaxxer.hikari.HikariDataSource:hikaripol-1-正在启动

2021-02-21 14:50:42.173信息4792---[task-1]com.zaxxer.hikari.HikariDataSource:hikaripol-1-启动完成

2021-02-21 14:50:42.235信息4792---[task-1]org.hibernate.dialogue.dialogue:hh000400:使用方言:org.hibernate.dialogue.mysql5dialogue

2021-02-21 14:50:42.306信息4792---[main]延迟存储初始化侦听器:触发Spring数据存储库的延迟初始化

2021-02-21 14:50:49.147信息4792---[task-1]o.h.e.t.j.p.i.JtaPlatformInitiator:hh000490:使用JtaPlatform实现:[org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]

2021-02-21 14:50:49.226信息4792---[任务1] j、 LocalContainerEntityManagerFactoryBean:已初始化JPA 持久化单元“默认值”的EntityManagerFactory 2021-02-21

14:50:50.349信息4792---[main] DelferredRepositoryInitializationListener:Spring数据存储库 初始化

2021-02-21 14:50:50.382信息4792---[main] c、 d.q.q.QuizzJavaSpringApplicationTests:已开始 15.982秒内测试JavaSpringApplicationTests(JVM运行时间为 17.371)[信息]测试运行:1,失败:0,错误:0,跳过:0,经过的时间:17.176秒-英寸 com.douineau.qjsbr.quizzjavaspring.QuizzJavaSpringApplicationTests

2021-02-21 14:50:51.047信息4792---[extShutdownHook] j、 LocalContainerEntityManagerFactoryBean:正在关闭JPA 持久化单元“默认”的EntityManagerFactory

2021-02-21 14:50:51.058信息4792---[extShutdownHook]o.s.s.concurrent.ThreadPoolTaskExecutor:正在关闭 ExecutorService“applicationTaskExecutor”

2021-02-21 14:50:51.061信息4792---[extShutdownHook]com.zaxxer.hikari.HikariDataSource:hikaripol-1-已启动关机

2021-02-21 14:50:51.109信息4792---[extShutdownHook]com.zaxxer.hikari.HikariDataSource:hikaripol-1-关闭完成


提前感谢您的支持。

max\u user\u connections表示有太多的“用户”*试图连接到您的mysql服务器

虽然可以按照此处所述配置服务器以允许更多连接: 我检查了您在客户机中使用的设置(您的java代码和可能的通道池(CP)配置,很可能在*.properties文件中)。 您的CP可以配置为拥有更多实际上不需要的连接(连接与RPS不同),因此一个选项是尽可能减少客户端的连接数。 这一次您可能会看到这个错误,而您过去没有看到它的另一个原因是水平可伸缩性?是不是过去你在N台服务器上运行代码,现在你在使用N+M台服务器?在这种情况下,从java客户端到mysql服务器的连接总数将增加,您有两个选择:增加到服务器的最大允许连接数,或者,如果合理,减少客户端(java应用程序)代码到mysql的连接数

*“用户”-可以有多个用户连接到mysql。用户A的最大连接数达到饱和并不意味着用户B将无法连接。因此,如果您重用来自不同应用程序的同一个mysql用户来连接到mysql,那么每个应用程序都可以有一个专用用户

更新:

来自mysql文档:

任何给定MySQL用户帐户允许的最大同时连接数。值为0(默认值)表示“无限制” 此变量具有全局值,可在服务器启动或运行时设置。它还有一个只读会话值,该值指示应用于与当前会话关联的帐户的有效同时连接限制。会话值初始化如下: 如果用户帐户的最大用户连接资源限制为非零,则会话最大用户连接值将设置为该限制。 否则,会话最大用户连接值将设置为全局值。 使用CREATE USER或ALTER USER语句指定帐户资源限制。见第6.2.20节“设置账户资源限额”


请确保重复使用或关闭连接。我在mysql中做了一个--显示“max_connections”之类的变量--设置为10000。我认为它足够大了,我的代码中可能有问题,但我不明白为什么部署时会有那么多连接。我使用Spring boot,所以CP由HikariCP管理。我可能需要设置一个实体管理器?