新しく学んだ事

業務システムの受託開発を主に行っています。人生日々勉強。日々新しく学んだ事を記します。

デッドロック問題

最近は次々と問題が起きて気が休まる気配がない。

デッドロックが頻発する現象に悩まされている。

プロファイラで対象の処理を特定できたので、同時に複数端末で実行したら現象を確認できた。

デッドロックは現地で発生してるけど、開発環境では確認できない事が多い。

今回は対象の処理まで特定できたので、重点的に調査が行えた。


発生する原因は

1.処理Aを実行(処理時間がかかる)

2.処理Aが実行している間にBの処理を複数端末で同時に実行

3.実行Aが完了するまで2の処理が待ち状態になる(同じテーブルを参照しているため)

4.処理Aが完了した時に待ちになっていた処理が一斉に実行される。

5.デッドロック発生

同時アクセス数が初期稼働時より何十倍も増えている。

もともと想定していなかったため、同時アクセスの考慮が不足している。

次の案件では設計時にその辺の事を考慮したい。