วิธีกำจัดปัญหาการพิมพ์ Deadlocks และ Lock time out


17

ฉันอ่านบล็อกหลายอันพยายาม google แต่ก็ไม่พบความพึงพอใจจากโซลูชันใด ๆ ฉันมีปัญหาต่อไปนี้:

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

ฉันพยายามที่จะแก้ปัญหานี้โดยการเพิ่มinnodb_pool_buffer_sizeและwait_timeoutใน my.ini แต่ไม่ได้ทำงาน

ฉันเปลี่ยนเอ็นจินของตารางแคชจาก Innodb เป็น MyIasm ปัญหาหายไป แต่ไม่ใช่วิธีแก้ปัญหาที่สมบูรณ์แบบ เอ็นจิ้นของตารางจะเปลี่ยนไปหลังจากการอัพเกรดของ drupal ปัญหานี้ไม่ได้ส่งผลกระทบอะไรกับเว็บไซต์ แต่ฉันไม่ต้องการให้สิ่งนี้เกิดขึ้น

มีวิธีแก้ปัญหาเหรอ?


คุณกำลังใช้ cron เป็นระยะหรือไม่? สำเร็จหรือไม่
mpdonadio

ใช่ cron ทำงานได้สำเร็จ
สุมิตร

อะไรทำให้คุณคิดว่ากลไกตารางแคชจะเปลี่ยนไปเมื่อทำการอัพเกรด นี่ไม่ใช่ประสบการณ์ของฉัน
keithm

ฉันหมายถึงถ้าฉันอัพเกรด drupal ตารางแคชจะเปลี่ยนจาก MyIasm เป็น Innodb ไม่มี ???
สุมิตร

คำตอบ:


16

อ่านและปฏิบัติตามโพสต์นี้ ; มันจะถือว่า InnoDB

โดยเฉพาะอย่างยิ่งดูส่วนที่บอกว่าจะเพิ่มต่อไปนี้ไปยังไฟล์ settings.php

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

ในลิงก์ให้เขากำลังพูดถึงการหยุดชะงักของ cache_field เท่านั้น แต่ในเว็บไซต์ของฉันการหมดเวลาการหยุดชะงักและการล็อคกำลังเกิดขึ้นในตารางแคชทั้งหมด
Sumit Madan

เฮ้ไมค์ขอบคุณสำหรับลิงค์ ฉันตรวจสอบโพสต์อื่น ๆ ของคุณและเพิ่มสิ่งนี้ใน settings.php $databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");แก้ปัญหาของฉันบนเซิร์ฟเวอร์ในพื้นที่ของฉัน ฉันยังไม่ได้ตรวจสอบบนเซิร์ฟเวอร์ที่ใช้งานอยู่ โปรดยืนยันว่าจะไม่ให้ปัญหาใด ๆ ในอนาคตหากมีการทดสอบจากคุณ ฉันกำลังใช้การค้าเริ่มต้น
Sumit Madan

ฉันใช้คำแนะนำทั้งหมดรายงานสดที่ได้ยินว่า drupal.org ใช้การอ่านที่มุ่งมั่น นอกจากนี้อย่าลืมใช้รุ่น d7 ล่าสุดเนื่องจากมีการแก้ไขการหยุดชะงักเช่นกัน
mikeytown2

1
Mikeytown2 จากสิ่งที่คุณพูดฉันเข้าใจว่าตอนนี้ drupal 7 เวอร์ชั่นได้แก้ไขสิ่งนี้แล้วหรือยัง? สงสัยในขณะที่ฉันยังคงเกิดปัญหาเดียวกันในรุ่นล่าสุด
Marko Blazekovic

1
@MarkoBlazekovic ปัญหาส่วนใหญ่ที่เกี่ยวกับการหยุดชะงักนั้นได้รับการแก้ไขเพียงครึ่งเดียวใน D7 ยังคงมีปัญหาการล็อก deadad และ metadata บางอย่างกับตารางแคชฐานข้อมูล ผมทำงานในโมดูลเพื่อแก้ปัญหาได้: drupal.org/project/apdqc APDQC จากการทดสอบของฉันแก้ปัญหาการล็อกฐานข้อมูลทุกครั้งที่เกี่ยวกับตารางแคช ตรวจสอบให้แน่ใจว่าได้แก้ไขปัญหาทั้งหมดในรายงานสถานะเมื่อติดตั้งแล้ว โปรดทราบว่าโมดูลยังอยู่ภายใต้การพัฒนาอย่างมากเนื่องจากฉันยังไม่ได้ปล่อยเวอร์ชั่นที่ไม่ใช่ dev
mikeytown2

4

วิธีที่ดีที่สุดในการกำจัดข้อผิดพลาด deadlock เพียงครั้งเดียวและทั้งหมดคือโมดูลแคช Query Cache Asynchronous Prefetch

ฉันไม่สามารถแนะนำได้เพียงพอ เขียนได้อย่างยอดเยี่ยมและประสิทธิภาพที่ยอดเยี่ยม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.