不久之前,我在这里写了有关死锁的信息:PDOException:SQLSTATE [40001]:序列化失败:1213尝试获取锁时发现了死锁;没有找到死锁。
尽管开发团队竭尽全力,我们仍然会收到如下错误:
PDOException:SQLSTATE [40001]:序列化失败:1213尝试获取锁时发现死锁;默认值为0。尝试重新启动事务:INSERT INTO {location_instance}(nid,vid,uid,genid,lid)VALUES(:db_insert_placeholder_0,:db_insert_placeholder_1,:db_insert_placeholder_2,:db_insert_placeholder_3,:db_insert_placeholder_4);数组([]在(_)位置的(_974)数组([]:db_insert_placeholder_0] => 1059 [:db_insert_placeholder_1] => 1059 [:db_insert_placeholder_2] => 0 [:db_insert_placeholder_3] => cck:field_item_location:1059 [:db_insert_placeholder_4] => 1000 /var/www/website.com/sites/all/modules/location/location.module)。
尽管该示例中有特定的表,但在其他表上仍会出现此错误。
这是我的情况。我参加了一个大型大学项目。在任何给定时间,每天都有50,000名校园居民使用该系统。除此之外,我还将手动和通过自定义模块代码(从旧大学数据迁移)将1000千个内容项迁移到这个新的Drupal 7站点。
这个错误正在使我们丧命,以至于如果Drupal无法处理这种类型的负载,我们几乎已经准备好废除过去几年的工作,并进行其他工作。
但这或多或少是我的问题-Drupal如何处理这种类型的负载?如何组织我的工作流程以处理这么多的活动?这是Drupal问题吗?数据库问题?
具体来说,我正在运行Ubuntu,LAMP堆栈16GB RAM。我愿意接受任何建议,无论是与Drupal有关,与数据库有关,与服务器配置有关,还是在Drupal的能力范围内可以工作的其他工作流程,如果有丰富的活动经验,请随时提出任何建议。