database - Drupal 网站因许多连接错误而被阻止 - 网站离线

标签 database drupal drupal-6 amazon-rds

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

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

Duplicate entry '279890-0-all' for key 'PRIMARY' query: node_access_write_grants /* Guest : node_access_write_grants */ INSERT INTO node_access (nid, realm, gid, grant_view, grant_update, grant_delete) VALUES (279890, 'all', 0, 1, 0, 0) in /var/www/quadplex/drupal-6.20/modules/node/node.module on line 2267.

Lock wait timeout exceeded; try restarting transaction query: content_write_record /* Guest : content_write_record */ UPDATE content_field_rating SET vid = 503621, nid = 503621, field_rating_value = 1212 WHERE vid = 503621 in /var/www/quadplex/drupal-6.20/sites/all/modules/cck/content.module on line 1213.

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

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

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

谢谢!

最佳答案

可以解决这三件事中的一个或全部来检查:

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

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

  3. 您是否使用/etc/my.cnf 对您的 mysql 进行了性能调优?请参阅此以获取更多想法:http://drupal.org/node/51263

关于database - Drupal 网站因许多连接错误而被阻止 - 网站离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273473/

相关文章:

drupal - "Unable to send e-mail. Please contact the site administrator"

web - Drupal:您使用 SVN 进行网站开发吗?

database - 将数据文件添加到 MS SQL Server 中的主文件组

java - 在数据库中添加第二个表

javascript - Slideshow_animate 未定义

drupal - 删除未使用的drupal核心模块

php - 序列化在 drupal 中对我不起作用

database - Docker如何管理数据库?

Android LogCat sqlite语法错误含义

php - 如何为 Drupal View 的模块创建自定义过滤器?