在Drupal 8中,我们得到了一些死锁条件--大部分与缓存有关。对于这个问题,有很多答案,但对于D8 (它有非常不同的缓存机制)就不是这么回事了。有没有解决/减轻问题的方法?
Drupal\Core\Entity\EntityStorageException: SQLSTATE[40P01]: Deadlock detected: 7 ERROR: deadlock detected DETAIL:
Process 9131 waits for ShareRowExclusiveLock on relation 8341492 of database 8341380; blocked by process 9130.
Process 9130 waits for ShareRowExclusiveLock on relation 8341562 of database 8341380; blocked by process 9131.
HINT: See server log for query details.: LOCK TABLE {cache_bootstrap} IN SHARE ROW EXCLUSIVE MODE;
Array ( ) in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save()
(line 847 of /var/xxx/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php).发布于 2019-11-29 08:50:42
您可以尝试将以下行添加到settings.php文件中:
$databases['default']['default']['init_commands'] = array(
'isolation' => "SET SESSION tx_isolation='READ-COMMITTED'"
);https://support.acquia.com/hc/en-us/articles/360005253954-Fixing-database-deadlocks
发布于 2019-11-28 10:01:30
您可以启用替代缓存实现(使用缓存引导) 模缓存或雷迪斯。了解更多关于死锁的信息:https://support.acquia.com/hc/en-us/articles/360005253954-Fixing-database-deadlocks
发布于 2019-11-28 10:33:26
不久前我有个bug,我发现了这个修复drupal中的死锁
ALTER TABLE semaphore ENGINE = MEMORY;
ALTER TABLE semaphore DROP PRIMARY KEY;
ALTER TABLE semaphore ADD PRIMARY KEY (name, value) USING BTREE;
ALTER TABLE semaphore ADD UNIQUE name (name) USING BTREE;
ALTER TABLE semaphore DROP INDEX value;
ALTER TABLE semaphore ADD INDEX value (value) USING BTREE;
ALTER TABLE semaphore DROP INDEX expire;
ALTER TABLE semaphore ADD INDEX expire (expire) USING BTREE;我希望这能帮上忙,对我有用。
https://drupal.stackexchange.com/questions/288774
复制相似问题