Deadlocks ve Lock zaman aşımı tipi sorunlarından nasıl kurtulurum?


17

Birden fazla blog okudum, google'ı denedim, ancak herhangi bir çözümden herhangi bir memnuniyet bulamadım. Aşağıdaki sorunlar var:

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

Bunu arttırarak innodb_pool_buffer_sizeve wait_timeoutmy.ini dosyasında çözmeye çalıştım ama işe yaramadı.

Önbellek masamın motorunu Innodb'dan MyIasm'a değiştirdim. Sorun gitti ama mükemmel bir çözüm değil. Masa motoru, drupal yükseltmesinden sonra değiştirilecektir. Bu sorun sitedeki hiçbir şeyi etkilemez, ancak bunun olmasını istemiyorum.

Herhangi bir çözüm var mı?


Periyodik cron mu kullanıyorsunuz? Başarıyla tamamlanıyor mu?
mpdonadio

Evet cron başarıyla çalışıyor.
Sumit Madan

Yükseltme sırasında önbellek tablosu motorunun değiştirileceğini düşünmenizi sağlayan şey nedir? Bu benim deneyimim olmadı.
keithm

Drupal'ı yükseltirsem önbellek tablosu MyIasm'dan Innodb'a değiştirilir. Hayır???
Sumit Madan

Yanıtlar:


16

Bu yazıyı okuyun ve takip edin ; InnoDB olduğunu varsayar.

Özellikle, settings.php dosyasına aşağıdakileri eklemek için bölüme bakın.

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

Verme bağlantısında, sadece cache_field kilitlenme için konuşuyor. Ancak sitemde, tüm önbellek tablolarında kilitlenme ve kilit bekleme süresi çıkıyor.
Sumit Madan

Merhaba Mike, Bağlantı için teşekkürler. Diğer yazınızı kontrol ettim ve bunu settings.php'ye $databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");ekledim, sorunumu yerel sunucumda çözdüm. Henüz canlı sunucuda kontrol etmedim. Sizin tarafınızdan test edilirse, gelecekte herhangi bir sorun olmayacağını lütfen doğrulayın? Ben ticaret kickstart kullanıyorum.
Sumit Madan

Tüm önerileri canlı, drupal.org'un okunan raporları kullandığını duydum. Ayrıca bir kilitlenme düzeltmesi olduğu için en son d7 sürümünü kullandığınızdan emin olun.
mikeytown2

1
Mikeytown2 Söylediklerinizden drupal 7 versiyonunun bunu çözdüğünü anladım? hala son sürümünde aynı sorunu ile gelip olarak merak.
Marko Blazekovic

1
@MarkoBlazekovic Kilitlenme ile ilgili başlıca sorunların çoğu D7'de yarı çözüldü. Veritabanı önbellek tablolarında hala bazı kilitlenme ve meta veri kilitleme sorunları var. Onları çözmek için bir modül üzerinde çalışıyorum: drupal.org/project/apdqc . Testlerimdeki APDQC, önbellek tablolarıyla ilgili hemen hemen her veritabanı kilitleme sorununu çözer. Yüklendikten sonra durum raporundaki tüm sorunları düzelttiğinizden emin olun. Modülün henüz geliştirici olmayan bir sürümünü yayınlamadığım için hala ağır geliştirme aşamasında olduğunu unutmayın.
mikeytown2

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.