php - CodeIgniter 网站上的错误 "too many connections"

标签 php mysql codeigniter

我已经在堆栈溢出上阅读了关于此主题的所有问题/答案,但不幸的是,没有一个能解决我的问题。

在过去的几天里,mysql 错误“太多的连接”不断出现在网站日志中,它使每个客户端的整个网站挂起。事实上,它会挂起服务器上的所有网站。

所以这是我的问题/评论:

  • 大约有 50 个不同的客户数据库,此外还有 2 个对所有客户都是通用的
  • 所有连接的 pconnect 已经 = FALSE
  • 在文件“php.ini”中,变量“allowpersistent”处于打开状态。即使我写 pconnect = FALSE,这是否会使 mysql 连接永久化? (我无法更改“allowpersistent”变量,必须询问托管公司)
  • 有 3 个加载数据库的文件,一个加载客户端的数据库,另外两个加载所有客户端的公共(public)数据库,它们在每个模型的构造方法上调用,但 CI 应该在完成后关闭 mysql 连接他们并忽略任何已经加载的“加载->数据库”
  • "db->close"显然什么都不做,因为 this->db->database 在我关闭它后保持它的值 :P
  • 当我写这篇文章时,Threads_connected 高达 1000,网站已关闭 :(
  • mysql配置有max_connections = 1000,能否进一步增加?我发现可用内存没有变化,那么会发生什么?
  • 我应该改用 PDO 吗?我正在使用 dbdriver“mysqli”
  • 我是否应该要求托管公司降低 mysql 变量“wait_timeout”,以便快速关闭数据库连接?
  • 我应该更新 CodeIgniter 吗?我的版本是 3.1.4,现在是 3.1.9

非常感谢您的帮助!

最佳答案

在我们的例子中,解决方案是将 mysql 变量“wait_timeout”从 8 小时(默认值,wtf!?)降低到 180 秒。如果需要,它仍然可以降低更多。这必须由托管公司完成,因为我们没有服务器的根访问权限。

我在问题中提到的所有其他解决方案均无效,例如“pconnect = false”和“db->close”。

“Threads_connected”现在始终低于 100 或 200,而不是此修复之前的近 1000。

我的团队为这个问题苦苦挣扎了两天,网上有很多人寻求解决方案,但没有任何(有效的)答案。

干杯:)

关于php - CodeIgniter 网站上的错误 "too many connections",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53226015/

相关文章:

javascript - 如何使Code Igniter ajax请求URL出现在浏览器URL中。

jquery - 使用 AJAX、jquery 和 codeigniter 显示数据库中的数据

javascript - 在 Codeigniter 中使用模态 Bootstrap 作为删除提示

PHP、HTML 美化器?

php - 将ckeditor html代码插入数据库

javascript - 如何使此弹出代码在一个网站上弹出 50%,在另一个网站上弹出 50%?

mysql - 选择三个表,首先与第二个表连接,最后连接所有三个表

php - 在 MySQL 数据库中保存数据的最有效方法是什么

mysql - #1064 - 您的 SQL 语法错误无法更改表以创建外键

c# - MySQL Linq 使用 .Contains(变量)