如何从 ubuntu 16 服务器上的 drupal 7 站点诊断(和修复)持久性 mysql 错误?

How to diagnose (and repair) persistent mysql errors from a drupal 7 site on an ubuntu 16 server?

我正在将 Drupal 7x 站点部署到 Digital Ocean Ubuntu 16.04 服务器以进行测试和演示。我将服务器 php 版本从 php7 切换到 PHP 5.6,但除此之外使用默认版本 Mysql 和 Apache2。我在安装网站和网站功能时没有遇到任何问题;但是,我经常遇到与数据库相关的错误,特别是以下错误:

PDOException: SQLSTATE[HY000] [2002] Connection refused in lock_may_be_available() (line 167 of /var/www/html/phisigmarho.org/includes/lock.inc).

我通常会遇到该错误,但当我执行任何数据库或进程密集型操作(通过 UI 更新模块等)时,我也会遇到 "the website experienced an error" 错误或 "mysql server has gone away"。我是相对较新的服务器管理人员,所以我不确定可能出了什么问题,或者我应该查看哪些日志以查找问题的线索。目前,从终端重新启动 MySQL 让我可以继续设置网站,但我不能让任何人像现在这样使用网站。

那么,我如何弄清楚为什么 MySQL 总是消失?我很困惑,因为服务器与我的开发机器(ubunutu 16 桌面 运行 php5.6)的配置非常相似,而且我没有任何类似的事情发生。我在哪里寻找有意义的日志来帮助我诊断或解决这个问题。那么,想法?

以下是我在这种情况下会尝试的一些事情。

  • 安装 Drush(如果尚未安装)。 然后查看以下命令得到的结果:

    • drush status - 检查站点配置是否正确,包括数据库连接
    • drush sqlc - 这将使用 settings.php 中指定的连接详细信息让您登录到 MySQL 命令行。确保此连接成功打开是值得的
    • drush cc all - 迁移到新环境时,清除站点的缓存始终是个好主意。
  • 如果还是不行,我会截断 Drupal 数据库中的所有 cache_* 表。我已经看到与上述类似的错误,正常的缓存清除不足以解决它。

  • 确保 Drupal 看门狗已启用。 drush en dblog。然后您可以使用 Drush 查看看门狗日志条目,例如drush ws

  • 检查 PHP 日志。您可能需要联系 Digital Ocean 以获取这些位置和访问权限。