it-swarm.dev

Deadlock nella tabella delle sessioni

Raramente, invece del caricamento del mio sito ottengo una schermata bianca della morte con questo messaggio di errore:

Deadlock trovato quando si cerca di ottenere il blocco; prova a riavviare la transazione SQL = INSERT INTO jom_session (session_id, client_id, guest, time, userid, username) VALUES ('cv95odk14jbe8738ecg9se9de1', 0, 0, '1402423781', 101, 'nome utente @ example.com ')

Non posso duplicarlo, ma l'ho già visto da solo ed è stato segnalato da altri utenti. Esiste un modo per impedire che ciò accada?

3
ContextSwitch

Se c'è un deadlock, indicherebbe che gli aggiornamenti dell'indice sono fatti da direzioni diverse per così dire e potrebbe esserci un bug in Joomla che lo causa. Oltre a documentare i sintomi o cercare di trovare il bug, puoi mitigare il problema consentendo alla tabella di sessione di essere più performante.

Oltre al commento di Jordans, puoi rendere la tabella delle sessioni molto efficiente trasformandola in una tabella MySQL di tipo MEMORY. Ciò significa che le sessioni vanno perse al riavvio di MySQL.

Per trasformarlo in una tabella di memoria, cambia il campo dati da mediumtext a qualcosa come varchar (15000) (la dimensione dipende da quali estensioni memorizzano quali dati), quindi trasforma il tipo in MEMORY.

È inoltre necessario consentire una memoria "heap" sufficiente nella configurazione di MySQL poiché la tabella verrà mantenuta in memoria. Per i siti di grandi dimensioni che gestisco utilizzo fino a 640 MB.

Per tutto questo devi avere un VPS almeno ovviamente.

1
jdog