【问题标题】:Drupal website blocked because of many connection errors - website goes offlineDrupal 网站因许多连接错误而被阻止 - 网站脱机
【发布时间】:2011-06-08 02:03:52
【问题描述】:

有时,从我们的 Drupal 6.20 系统到我们的 Mysql 数据库的数据库连接数达到 100-150,然后网站会离线。尝试手动连接到 Mysql 时的错误消息是“由于许多连接错误而被阻止。使用 'mysqladmin flush-hosts' 解除阻止”。由于数据库托管在 Amazon RDS 上,我无权发出此命令,但我可以重新启动数据库,并且一旦重新启动,网站就会再次正常工作。直到下次。

Drupal 在离线前报告多个错误,分为两种类型:

重复条目 '279890-0-all' 键 “主要”查询: node_access_write_grants /* 来宾: node_access_write_grants */ 插入 INTO node_access (nid, 领域, gid, 授予视图,授予更新, 授予删除)值(279890, '全部', 0, 1, 0, 0) 在 /var/www/quadplex/drupal-6.20/modules/node/node.module 在第 2267 行。

超过锁定等待超时;尝试 重启事务查询: content_write_record /* 访客: content_write_record */ 更新 content_field_rating 设置 vid = 503621, nid = 503621,field_rating_value = 1212 哪里 vid = 503621 在 /var/www/quadplex/drupal-6.20/sites/all/modules/cck/content.module 在第 1213 行。

这两个查询中的nid总是相同的,并且指的是两个经常被自定义模块自动更新的节点。我可以在 Apache 日志中追踪这些错误与异常多的 Web 请求之间的相关性。我会理解该网站会因此而变慢。但是:

  1. 为什么会出现这些错误,如何解决?在我看来,这与尝试同时更新同一个节点的多个 Web 请求有关。但是 Drupal 肯定应该通过锁定表等来解决这个问题吗?还是我应该用一些特殊的方式来处理它?

  2. 尽管网络负载较高,为什么数据库完全锁定并需要重新启动?如果网站仍然可以访问Mysql,那么一旦负载降低,它可以再次提供页面,那不是更好吗?有什么设置吗?

谢谢!

【问题讨论】:

  • 请显示此自定义模块代码 sn-p。您是否尝试关闭数据库记录器?
  • 您应该提供模式详细信息。我能给你的唯一建议是尝试将你的表从 MyIsam 转换为 InnoDB。
  • 我们需要知道在重复键输入之前发生了什么。堆栈跟踪、错误、日志等等。

标签: database drupal drupal-6 amazon-rds


【解决方案1】:

可以解决这三项检查中的一项或全部:

  1. 磁盘空间不足了吗?在 ssh 中,键入命令 df -h 并确保您仍有磁盘空间。

  2. 表是否损坏?修复 phpMyAdmin 中的表格,或此处的 CLI 说明:http://dev.mysql.com/doc/refman/5.1/en/repair-table.html

  3. 您是否使用 /etc/my.cnf 对 mysql 进行了性能调整?有关更多想法,请参阅此内容:http://drupal.org/node/51263

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    相关资源
    最近更新 更多