デッドロックとロックタイムアウトタイプの問題を取り除く方法は?


17

複数のブログを読んで、グーグルで検索しようとしましたが、解決策に満足していませんでした。次の問題があります。

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

my.iniを増やしてこれを解決しようinnodb_pool_buffer_sizeとしwait_timeoutましたが、うまくいきませんでした。

キャッシュテーブルのエンジンをInnodbからMyIasmに変更しました。問題はなくなりましたが、完璧な解決策ではありません。テーブルエンジンは、drupalのアップグレード後に変更されます。この問題はサイト上の何にも影響しませんが、これが発生するのは望ましくありません。

解決策はありますか?


定期的なcronを実行していますか?正常に完了していますか?
mpdonadio

はい、cronは正常に実行されています。
スミットマダン14年

アップグレード時にキャッシュテーブルエンジンが変更されると思われる理由は何ですか?これは私の経験ではありません。
キース14年

drupalをアップグレードすると、キャッシュテーブルがMyIasmからInnodbに変更されます。番号???
スミットマダン14年

回答:


16

この投稿を読んでフォローしください。InnoDBを想定しています。

特に、settings.phpファイルに以下を追加することを言っている部分を参照してください。

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

ギブリンクでは、彼はcache_fieldデッドロックについてのみ話しています。しかし、私のサイトでは、すべてのキャッシュテーブルでデッドロックとロック待機のタイムアウトが発生しています。
スミットマダン14

ちょっとマイク、リンクをありがとう。私はあなたの他の投稿をチェックし、これをsettings.phpに追加する$databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");ことで私のローカルサーバーの問題を解決しました。ライブサーバーでまだチェックしていません。あなたによってテストされた場合、今後問題が発生しないことを確認してください。コマースキックスタートを使用しています。
スミットマダン14

drupal.orgはread commitを使用しているという報告を聞いて、すべての推奨事項をライブで使用します。また、デッドロックが修正されているため、必ず最新のd7リリースを使用してください。
mikeytown2 14

1
Mikeytown2あなたが言っていることから、私は今、drupal 7バージョンがこれを解決したことを理解しましたか?私はまだ最新バージョンで同じ問題を思いついているので、それについて疑問に思っています。
マルコブラゼコビッチ

1
@MarkoBlazekovicデッドロックに関する主要な問題のほとんどは、D7で半分解決されています。データベースキャッシュテーブルには、まだいくつかのデッドロックとメタデータロックの問題があります。私はそれらを解決するモジュールに取り組んでいます:drupal.org/project/apdqc。私のテストによるAPDQCは、キャッシュテーブルに関するデータベースロックのほぼすべての問題を解決します。ステータスレポートをインストールしたら、必ずステータスレポートのすべての問題を修正してください。このモジュールは、開発版以外のバージョンをまだリリースしていないため、まだ開発中です。
mikeytown2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.