Jak pozbyć się problemów z zakleszczeniem i czasem oczekiwania na blokadę?


17

Czytałem wiele blogów, próbowałem google, ale nie znalazłem żadnej satysfakcji z żadnego rozwiązania. Mam następujące problemy:

PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction: DELETE FROM {cache_field} WHERE (cid LIKE :db_condition_placeholder_0 ESCAPE '\\') ; Array ( [:db_condition_placeholder_0] => field\_info:% ) in cache_clear_all() (line 163 of \includes\cache.inc).

PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction: SELECT 1 AS expression FROM {sessions} sessions WHERE ( (sid = :db_condition_placeholder_0) AND (ssid = :db_condition_placeholder_1) )

Próbowałem rozwiązać ten problem, zwiększając innodb_pool_buffer_sizei wait_timeoutw moim.ini, ale nie zadziałało.

Zmieniłem silnik mojej tabeli pamięci podręcznej z Innodb na MyIasm. Problem zniknął, ale nie jest to idealne rozwiązanie. Silnik tabeli zostanie zmieniony po aktualizacji drupala. Ten problem nie ma wpływu na nic na stronie, ale nie chcę, aby tak się stało.

Jakieś rozwiązanie chłopaki?


Czy korzystasz z okresowego crona? Czy to się kończy?
mpdonadio

Tak, cron działa poprawnie.
Sumit Madan

Co sprawia, że ​​uważasz, że silnik tabeli pamięci podręcznej zostanie zmieniony podczas aktualizacji? To nie było moje doświadczenie.
keithm

Mam na myśli, że jeśli uaktualnię drupala, tabela pamięci podręcznej zostanie zmieniona z MyIasm na Innodb. Nie???
Sumit Madan

Odpowiedzi:


16

Przeczytaj i śledź ten post ; zakłada InnoDB.

W szczególności zapoznaj się z częścią dotyczącą dodania następujących elementów do pliku settings.php.

$databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");

W łączu podającym mówi tylko o impasie cache_field. Ale w mojej witrynie na wszystkich tabelach pamięci podręcznej występuje zakleszczenie i czas oczekiwania blokady.
Sumit Madan

Hej Mike, dzięki za link. Sprawdziłem twój drugi post i dodanie tego do settings.php $databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");rozwiązało mój problem na moim lokalnym serwerze. Nie sprawdziłem tego jeszcze na serwerze na żywo. Potwierdź, że nie spowoduje to żadnego problemu w przyszłości, jeśli zostanie przez Ciebie przetestowany? Używam kickstart handlu.
Sumit Madan

Korzystam ze wszystkich rekomendacji na żywo, słyszę raporty, że drupal.org używa read read. Upewnij się również, że korzystasz z najnowszej wersji d7, ponieważ ma ona również poprawkę impasu.
mikeytown2

1
Mikeytown2 Z tego, co mówisz, zrozumiałem, że teraz drupal 7 wersji ma to rozwiązane? zastanawiam się nad tym, ponieważ wciąż mam ten sam problem w najnowszej wersji.
Marko Blazekovic

1
@MarkoBlazekovic Większość głównych problemów z zakleszczeniem rozwiązano w połowie w D7. Nadal występują problemy z zakleszczeniem i blokowaniem metadanych w tabelach pamięci podręcznej bazy danych. Pracuję nad modułem do ich rozwiązania: drupal.org/project/apdqc . APDQC z moich testów rozwiązuje prawie każdy problem z blokowaniem bazy danych w odniesieniu do tabel pamięci podręcznej. Pamiętaj, aby rozwiązać wszystkie problemy w raporcie stanu po jego zainstalowaniu. Zauważ, że moduł jest wciąż w fazie rozwoju, ponieważ nie wydałem go jeszcze w wersji innej niż dev.
mikeytown2

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.