Làm thế nào để thoát khỏi Deadlocks và Khóa thời gian ra các vấn đề loại?


17

Tôi đã đọc nhiều blog, đã thử google, nhưng không tìm thấy sự hài lòng từ bất kỳ giải pháp nào. Tôi có các vấn đề sau:

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

Tôi đã cố gắng giải quyết điều này bằng cách tăng innodb_pool_buffer_sizewait_timeouttrong my.ini nhưng không hiệu quả.

Tôi đã thay đổi công cụ của bảng bộ đệm từ Innodb thành MyIasm. Vấn đề đã biến mất nhưng nó không phải là một giải pháp hoàn hảo. Động cơ bảng sẽ được thay đổi sau khi nâng cấp drupal. Vấn đề này không ảnh hưởng đến bất cứ điều gì trên trang web nhưng tôi không muốn điều này xảy ra.

Giải pháp nào các chàng trai?


Bạn đang chạy cron định kỳ? Có hoàn thành thành công?
mpdon Arena

Có cron đang chạy thành công.
Sumit Madan

Điều gì khiến bạn nghĩ rằng công cụ bảng bộ đệm sẽ được thay đổi khi nâng cấp? Đây không phải là kinh nghiệm của tôi.
keithm

Ý tôi là nếu tôi nâng cấp drupal, bảng cache sẽ được thay đổi từ MyIasm thành Innodb. Không???
Sumit Madan

Câu trả lời:


16

Đọc và theo dõi bài này ; nó giả định InnoDB.

Cụ thể, hãy xem phần nói để thêm phần sau vào tệp settings.php.

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

Trong liên kết đưa ra, anh ta chỉ nói về bế tắc cache_field. Nhưng trên trang web của tôi, thời gian chờ khóa và khóa chờ xảy ra trên tất cả các bảng bộ đệm.
Sumit Madan

Này Mike, Cảm ơn vì đường link. Tôi đã kiểm tra bài đăng khác của bạn và thêm bài này vào settings.php đã $databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");giải quyết vấn đề của tôi trên máy chủ cục bộ. Tôi chưa kiểm tra nó trên máy chủ trực tiếp. Vui lòng xác nhận rằng nó sẽ không đưa ra bất kỳ vấn đề nào trong tương lai nếu nó được thử nghiệm bởi bạn? Tôi đang sử dụng kickstart thương mại.
Sumit Madan

Tôi sử dụng tất cả các khuyến nghị trực tiếp, nghe báo cáo rằng drupal.org sử dụng đọc cam kết. Ngoài ra hãy chắc chắn để sử dụng bản phát hành d7 mới nhất vì nó cũng có một bản sửa lỗi bế tắc.
mikeytown2

1
Mikeytown2 Từ những gì bạn đang nói tôi hiểu rằng bây giờ 7 phiên bản drupal đã giải quyết vấn đề này? tự hỏi về nó khi tôi vẫn gặp vấn đề tương tự trong phiên bản mới nhất.
Marko Blazekovic

1
@MarkoBlazekovic Hầu hết các vấn đề lớn với sự bế tắc đã được giải quyết một nửa trong D7. Vẫn còn một số vấn đề khóa bế tắc và siêu dữ liệu với các bảng bộ đệm cơ sở dữ liệu. Tôi đang làm việc trên một mô-đun để giải quyết chúng: drupal.org/project/apdqc . APDQC từ thử nghiệm của tôi giải quyết mọi vấn đề về khóa cơ sở dữ liệu liên quan đến các bảng bộ đệm. Hãy chắc chắn khắc phục tất cả các vấn đề trên báo cáo trạng thái sau khi nó được cài đặt. Lưu ý rằng mô-đun vẫn đang được phát triển nặng nề vì tôi vẫn chưa phát hành phiên bản không phát triển của nó.
mikeytown2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.