デッドロック問題
最近は次々と問題が起きて気が休まる気配がない。
デッドロックが頻発する現象に悩まされている。
プロファイラで対象の処理を特定できたので、同時に複数端末で実行したら現象を確認できた。
デッドロックは現地で発生してるけど、開発環境では確認できない事が多い。
今回は対象の処理まで特定できたので、重点的に調査が行えた。
発生する原因は
1.処理Aを実行(処理時間がかかる)
2.処理Aが実行している間にBの処理を複数端末で同時に実行
3.実行Aが完了するまで2の処理が待ち状態になる(同じテーブルを参照しているため)
4.処理Aが完了した時に待ちになっていた処理が一斉に実行される。
5.デッドロック発生
同時アクセス数が初期稼働時より何十倍も増えている。
もともと想定していなかったため、同時アクセスの考慮が不足している。
次の案件では設計時にその辺の事を考慮したい。