Come sbarazzarsi dei problemi di tipo di timeout di blocco e deadlock?


17

Ho letto più blog, ho cercato su Google, ma non ho trovato alcuna soddisfazione da nessuna soluzione. Ho i seguenti problemi:

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) )

Ho cercato di risolvere questo problema aumentando innodb_pool_buffer_sizee wait_timeoutin my.ini ma non ha funzionato.

Ho cambiato il motore della mia tabella cache da Innodb a MyIasm. Il problema è andato ma non è una soluzione perfetta. Il motore della tabella verrà modificato dopo un aggiornamento di drupal. Questo problema non influisce su nulla sul sito ma non voglio che ciò accada.

Qualche soluzione ragazzi?


Stai eseguendo cron periodici? Si sta completando con successo?
mpdonadio

Sì cron funziona correttamente.
Sumit Madan,

Cosa ti fa pensare che il motore della tabella cache verrà modificato durante l'aggiornamento? Questa non è stata la mia esperienza.
keithm

Voglio dire se aggiorno il drupal la tabella della cache verrà cambiata da MyIasm a Innodb. No???
Sumit Madan,

Risposte:


16

Leggi e segui questo post ; assume InnoDB.

In particolare, vedi la parte che dice di aggiungere quanto segue al file settings.php.

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

Nel link Give, sta parlando solo per deadlock cache_field. Ma sul mio sito, il timeout di attesa deadlock e blocco si sta verificando su tutte le tabelle della cache.
Sumit Madan

Ehi Mike, grazie per il link. Ho controllato gli altri tuoi post e aggiungendoli a settings.php $databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");ho risolto il mio problema sul mio server locale. Non l'ho ancora verificato sul server live. Conferma che non darà alcun problema in futuro se verrà testato da te? Sto usando il kickstart commerciale.
Sumit Madan,

Uso tutte le raccomandazioni dal vivo, ho ascoltato le segnalazioni che drupal.org utilizza read commit. Assicurati anche di utilizzare l'ultima versione di d7 in quanto ha anche una correzione del deadlock.
mikeytown2,

1
Mikeytown2 Da quello che stai dicendo ho capito che ora le versioni drupal 7 hanno risolto questo problema? mi chiedo perché ho ancora lo stesso problema nell'ultima versione.
Marko Blazekovic,

1
@MarkoBlazekovic La maggior parte dei principali problemi con deadlock è risolta per metà in D7. Esistono ancora alcuni problemi di deadlock e blocco dei metadati con le tabelle della cache del database. Sto lavorando a un modulo per risolverli: drupal.org/project/apdqc . APDQC dai miei test risolve quasi ogni singolo problema di blocco del database per quanto riguarda le tabelle della cache. Assicurati di risolvere tutti i problemi sul rapporto di stato dopo che è stato installato. Si noti che il modulo è ancora in fase di sviluppo in quanto non ho ancora rilasciato una versione non dev di esso.
mikeytown2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.