【问题标题】:RedHat + MySQL + Tomcat: ERROR 1040: Too many connections (but everything is fine on Ubuntu)RedHat + MySQL + Tomcat:错误 1040:连接太多(但在 Ubuntu 上一切正常)
【发布时间】:2019-07-15 03:13:42
【问题描述】:

我们有一个应用程序(Java、Spring Boot、Hikari CP)。环境:Ubuntu + MySQL 5.7.25。一切正常。

现在我们正在尝试将它安装在 RedHat (MySQL 5.7.25) 上。应用程序正在运行。但是当我们尝试登录并且应用程序尝试连接到数据库时,它会收到 ERROR 1040: Too many connections。之后,即使使用命令行,我们也无法连接到 MySQL(它以 ERROR 1040 响应)。

我不确定增加连接数是否是一个好的解决方案,因为在 Ubuntu 中我们使用默认值 (151) 并且一切正常。

有什么想法吗?

【问题讨论】:

  • 听起来您可能在一个脚本中使用了多个连接。您能否向我们展示至少您的登录过程的代码
  • /etc/security/limits.* 结合 ulimit(硬 vrs 软)。
  • 感谢您的快速解答。我想我不清楚。一些细节。我们正在使用推荐的 Hikari 配置:github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration。从日志文件中我们可以看到,用户详细信息从 DB 加载没有任何问题(这是第一个 DB 请求)。在该系统发出下一个 SQL 请求但收到 1040 错误之后。我们会检查您的建议并通知您。

标签: java mysql tomcat redhat hikaricp


【解决方案1】:

您需要检查 mysql 正在运行的用户的 ulimit。

除了 MySQL 设置的 100,000 的限制外,在 mysql 中可以配置多大的 max_connections 的上限很大程度上取决于操作系统。

Linux 有一个称为最大打开文件数的限制,它被定义为“每次登录”,表示一个进程可以打开的最大文件数。在大多数情况下,默认值为 1024,但某些 SELinux 安装会将其重置为较小的数字。

您可以通过以下方式进行检查:

mysql$ ulimit -n

【讨论】:

  • 非常感谢。我们会尽快检查。
  • 实际上它从 dist 到 dist 以及从发布到发布都不同,(因此不同的行为 ubuntu redhat )
  • 检查了 ulimit 大小。它是无限的
  • 在这里我认为这将是一个简单的答案:P。在运行脚本并检查连接是否正确终止之前,您是否尝试以管理员身份登录?
猜你喜欢
  • 2015-03-24
  • 2017-10-30
  • 2020-04-27
  • 2012-12-29
  • 2014-06-27
  • 2015-08-06
  • 2018-12-22
  • 2019-04-29
  • 1970-01-01
相关资源
最近更新 更多