Joomla - 无法连接到 MySQL - "Sometime"

Joomla - Could not connect to MySQL - "Sometime"

Error displaying the error page: Application Instantiation Error: Could not connect to MySQL.

这个错误有时会出现(每 20 个页面浏览量就会出现一个),我尝试了很多解决方案都没有任何改变。

Joomla 3.5+ 发现此错误

这将帮助您进行一些测试...

在 MySql 服务器上 运行 此查询...

show processlist;

如果这显示有很多连接,那么您可能遇到了 max_connections 问题。尝试将其增加到合理的数量。但是,不要让它太多,因为如果它超出了您服务器上的可用资源量,那么它会导致 MySql 服务器崩溃,这将成为您的网站离线的更大问题。

尝试使用 session_write_close() 来检查您是否在脚本中正确关闭了会话;您可以在此处找到有关此功能的更多信息:http://php.net/manual/en/function.session-write-close.php 此函数会将用户的当前会话写入磁盘,以便下次重新加载,对于此问题,它会为您做的最重要的部分是它将关闭 PHP 与 MySql 服务器建立的任何连接,因此它将释放 MySql 服务器,供下一位访问者打开另一个页面。

假设您有 150 个 max_connections 并且同时有 200 个访问者,那么 PHP 仍会等待一段时间以等待另外 50 个连接空闲,然后再给出超时错误你在哪里得到 "Could not connect to server"。但是,如果会话没有正确关闭,那么 50 个连接永远不会得到处理就太糟糕了,因为 150 个连接永远不会很快消失,对于名为 wait_timeout 的那个有一个单独的 MySql 设置。因此,您打开的任何 MySql 连接将一直等待,直到您在脚本中关闭自己,就像您打开或直到 wait_timeout 发生。但是,如果您正确关闭会话,那么下一个连接将在您的 PHP 脚本完成处理并生成页面供用户查看后立即可用,这将使连接席位空闲以供下一个连接进入。

服务器 RAM 非常低!

从 0.5GB 升级到 2GB 后,所有以 Error displaying the error page: 开头的错误都消失了。

我在通过 SSH 连接到服务器时使用 htop 找到了问题解决方案,之后,我开始快速打开显示错误的页面,而且 htop 显示 RAM 接近满。

show processlist; 有助于发现问题与连接无关 number.which 它有时可能以相同的方式花费相同的错误。