Railsのバージョン:2.3.8ActiveRecordの「MySQLの::エラー:超過ロック待機タイムアウト」明白なロックと
多くの回日thoughout、私のアプリケーションは、一見ランダムで対応するエントリと500エラーが返されます生産履歴:MySQLのスロークエリログを点検
ActiveRecord::StatementInvalid (Mysql::Error: Lock wait timeout exceeded; try restarting transaction: INSERT INTO `forum_posts` (`forum_topic_id`, `created_at`, `body`, `ancestry`, `updated_at`, `quote_limit`, `user_id`, `ancestry_depth`, `quote_root`) VALUES(1224783, '2011-01-24 19:18:38', 'Post body', '1285704', '2011-01-24 19:18:38', 1, 57931, 1, 1))
は、このエントリを示していますRailsのログによると
# Time: 110124 11:19:29
# [email protected]: db_user[db_user] @ localhost []
# Query_time: 51 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
SET insert_id=0;
INSERT INTO `forum_posts` (`forum_topic_id`, `created_at`, `body`, `ancestry`, `updated_at`, `quote_limit`, `user_id`, `ancestry_depth`, `quote_root`) VALUES(1224783, '2011-01-24 19:18:38', 'Post body', '1285704', '2011-01-24 19:18:38', 1, 57931, 1, 1);
を、ActiveRecordのが理由のエラーを返しましたロック待ちタイムアウトこの単純なクエリの長期的な性質は同様に示唆しているようです。問題は、遅いクエリログはどこにもありません。処理に長い時間を要する実際のクエリを見つけることができます。これらはすべて上の例に似ています。さらに、この同じログでは、1つのエントリの値がLock_time
で、0より大きくはありません。
この見た目のロックを引き起こす可能性のあるアイデアは何ですか?現在使用しているツールはあまり役に立たないようです。
ありがとうございます。
'show innodb status'を介して表示されている長期にわたるトランザクションはありますか?これらは暗黙的なロックを作成する可能性があり、他の場所には表示されません。 –
現在存在しません。 「行ロックハッシュテーブルのロック構造体の総数」も0である。 – modulaaron
私はこの同じ問題を追いかけています。私はあなたがそれを解決したとは思わない? – kwerle