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



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

Drupal在离线前报告了两种类型的多个错误:

重复条目';279890-0-全部';对于密钥';主要';查询:node_access_write_grants/*访客:node_access_write_grants*/INSERTINTO node_access(nid,领域,gid,grant_view、grant_update,grant_delete)值(279890,';所有';,0,1,0,0)/var/www/quadplex/drupal-6.20/modules/node.module2267线上。

超过锁定等待超时;尝试重新启动事务查询:content_write_record/*客人:content_write_record*/UPDATEcontent_ field_ rating SET 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. 尽管web负载更高,为什么数据库会完全锁定并需要重新启动?如果网站仍然可以访问Mysql,这样,一旦负载降低,它就可以再次提供页面,这不是更好吗?有什么设置吗?

谢谢!

可以解决以下三个问题中的一个或全部:

  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

最新更新