Đột nhiên (không có bất kỳ thay đổi mã có liên quan), chúng tôi đang nhận lỗi khóa qua kỷ lục hoạt động như:Làm cách nào để khắc phục sự cố Lỗi thời gian chờ của MySQL với Rails?
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: UPDATE `items` SET `state` = 'reserved', `updated_at` = '2012-09-15 17:58:21' WHERE `items`.`id` = 248220
và
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: DELETE FROM `sessions` WHERE `sessions`.`id` = 41997883
Chúng tôi không làm các giao dịch của chúng ta trong cả hai của các mô hình này, do đó, các giao dịch duy nhất được xây dựng trong các mô hình đường ray. Chưa có sự đột biến về lưu lượng truy cập hoặc khối lượng yêu cầu.
Các lỗi này xuất hiện khi truy vấn "mới" cố gắng chạy trên bảng bị khóa và phải đợi, làm thế nào để chúng ta thấy những gì nó đang chờ đợi? Làm cách nào để chúng tôi tìm ra phần nào của mã của chúng tôi đang phát hành các truy vấn khóa bảng trong thời gian dài?
Bất kỳ ý tưởng nào về nơi chúng tôi có thể xem hoặc cách điều tra nguyên nhân của việc này?
Bạn có thể thử thực hiện phương pháp vô hiệu hóa khóa khoảng cách như vậy: innodb_locks_unsafe_for_binlog = 1, nó có thể gây ra một số bản ghi ảo. đọc thêm về nó [ở đây] (http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_locks_unsafe_for_binlog) – Yarneo
Động cơ DB cơ bản là gì? Nếu INNODB của nó, bạn có thể đăng 'hiển thị trạng thái innodb' không? – ethrbunny
SHOW ENGINE INNODB STATUS https://gist.github.com/3758910 – chrishomer