東証システム障害の原因

東証がシステム障害で2銘柄の取引が一時停止になった件について。

ITMeaiaの記事では最初「東証のシステムでは、注文をデータベースに登録する際、ほかの注文が書き込まれないよう「デッドロック」と呼ばれるロックをかける。」と書いてあったのだが、後で「「デッドロック」と呼ばれる」を削除した。「「デッドロック」と呼ばれるロックをかける。」って…。修正後でも「登録の再試行は100回までと設定されていたが、3月10日は短時間に大量の注文が集中したため、上限回数を超えても2銘柄の注文が登録できない「デッドロック」が発生し、システムが停止したという。」と書いているあたり、やはりデッドロックの意味がわかっていないっぽい。

東証のニュースリリースを見ても原因がよくわからなかったのだけど、ITProの記事を見てだいたい原因がわかった。デッドロックになると後発のトランザクションを強制終了して処理をリトライするんだけどリトライ回数が100回になるとそれ以上はリトライせずに異常終了になったため処理に関係していた銘柄が売買停止になったようだ。おそらく100回リトライというのも、根拠があるものではなくて「100回やっておけば大丈夫だよねー」とか言って実装したものだと思われる。それにしても、100回リトライして失敗したらニュース沙汰になるという仕様だったのだろうか。とりあえず、100回リトライしていたのを無制限にして対応したようだが、このシステムは他にも穴がありそう。

<追記>

この記事を書くにあたって参考にした「ぺたぺたしてってください(^^;」さんからトラックバックをいただきました。確かに「デッドロック」という言葉が一人歩きしていているように思います。あと、「ITMedia」さんの記事にもトラックバックしたのですが、トラックバックが通っていません。