有时,从Drupal 6.20系统到我们的Mysql数据库的数据库连接数达到100-150,过了一段时间网站才会脱机。尝试手动连接到Mysql时的错误消息“由于许多连接错误而被阻止。使用'mysqladmin flush-hosts'解锁”。由于数据库托管在Amazon RDS上,因此我无权发出此命令,但我可以重新启动数据库,一旦重新启动,网站将再次正常工作。直到下一次。
Drupal在脱机前报告多个错误,有两种类型:
重复录入 '279890-0-all'为关键 'PRIMARY'查询: node_access_write_grants / *访客: 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 在第2267行。
超过锁定等待超时;尝试 重启事务查询: content_write_record / *访客: 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 在1213行。
这两个查询中的nids始终相同,并且指的是自定义模块经常自动更新的两个节点。我可以在Apache日志中追踪这些错误与异常多的Web请求之间的关联。我会理解,因为这个网站会变慢。但是:
为什么会出现这些错误,如何解决?在我看来,这是与几个尝试同时更新同一节点的Web请求有关。但是,Drupal肯定应该通过锁定表等来解决这个问题吗?或者我应该以某种特殊方式处理它?</ p>
尽管Web负载较高,为什么数据库完全锁定并需要重新启动?如果网站仍然可以访问Mysql并不是更好,所以,一旦负载较低,它可以再次提供页面?这有什么设置吗?
谢谢!
答案 0 :(得分:3)
可以解决这三件事中的一件或全部:
你没有磁盘空间吗?从ssh,键入命令df -h并确保您仍有磁盘空间。
桌子是否损坏?在phpMyAdmin或CLI指令中修复表:http://dev.mysql.com/doc/refman/5.1/en/repair-table.html
您是否使用/etc/my.cnf对您的mysql进行了性能调整?有关更多提示,请参阅此处:http://drupal.org/node/51263