東証の派生売買システムで障害、4時間取引停止 94
ストーリー by hylom
なぜ88になったのかが気になる 部門より
なぜ88になったのかが気になる 部門より
soara 曰く、
東京証券取引所の東証株価指数(TOPIX)先物や国債先物取引を行う派生売買システムで、7月22日取引開始直後から注文状況を表示できないトラブルが発生した。その影響で、9時21分から13時45分まで派生商品の取引を停止した。
東証は今回のトラブルの原因をつかみ対応を済ませたとして、7月23日は通常通り取引を行う。
NIKKEI NETの記事によると原因は、連休中のシステム改修適用の際、売買注文状況を示す「板」のデータ容量の上限を 2万銘柄とすべきところ、88銘柄に設定していたためとのこと。
これにより、板に89銘柄を超えた問い合わせがあるとシステムが停止してしまうというトラブルが発生していたということだ。なお、今回のシステムを開発したのは富士通で、状況によっては損害賠償の請求も検討するとのこと。
ちょっと違う (スコア:4, 参考になる)
データ容量のサイズが28000銘柄分のはずが88銘柄分しか確保できてなかった。
http://itpro.nikkeibp.co.jp/article/NEWS/20080722/311271/
Re:ちょっと違う (スコア:5, 参考になる)
Re:ちょっと違う (スコア:1)
Re:ちょっと違う (スコア:1, 興味深い)
皆さん現役の方ですよね。世の中にはこの手のバグを飼ってるソフトが多数出荷されてるってことになりますか。
Re:ちょっと違う (スコア:1, 興味深い)
同時に、東証のシステムが 64bit 化されていない事も推測できる、と w
Re:ちょっと違う (スコア:1, おもしろおかしい)
そんなプロジェクトありません(笑)
#笑っちゃいけないところだけど。
Re:ちょっと違う (スコア:1)
>そんなプロジェクトありません(笑)
一度に複数人で確認する事は無いけど、3ヶ月ごとに別の人がメンテする案件というのはありがち。
まあ、今回に限って言えば、いかにコーディングを正確に行ったかよりも、
境界値・例外値・適正値の検証不足が原因でしょう。
人の数より、質の問題。
一見コードは正しいけど、運用でコケるって類のミスを防ぐには、
PGが複数人居て見ても気がつきにくい、なぜなら業務のプロでないから。
いわゆるユーザー系SIであれば、業務にも通じている人間が常時いるけど、
大規模アプリの全モジュールをチェックできる人数抱えていない罠。
#88銘柄にしろ28000銘柄にしろ、上限値を超えた時の例外処理にも問題があるように思える。
Re:ちょっと違う (スコア:1)
それはそれで怖いですな。小説のネタっぽいですが。
あぁそうそう、そうですよだから僕は三流プログラマなんですよ!
決して怠惰で勉強してないわけじゃないんですよ!
Re:ちょっと違う (スコア:1)
sizeof(DataType) のつもりが sizeof(DataType*) になってたとか?
…っていうのは、やっちゃったことあります。マクロ化してて、引数の型を間違えたりとか…
#define alloc(type,count) malloc(sizeof(type)*(count))
DataType *p = alloc(p, count);
ってな感じのコードだったかな。
Re:ちょっと違う (スコア:1, 参考になる)
そういう間違いを防ぐため、以下のようなマクロを使うことにしてます。
#define MALLOC1(p) ((p) = malloc(sizeof(*(p))))
#define MALLOCN(p,n) ((p) = malloc_array((n), sizeof(*(p))))
なお関数 malloc_array() 内では、整数オーバーフローのチェックが必要です。
親記事の alloc() マクロは、その点でも問題がありますね。
Re:ちょっと違う (スコア:1, すばらしい洞察)
これって最大値のチェックが抜けていたって事でしょ?
原因は確かに設定ミスだけど、この程度なら、ちゃんとテストすれば発見出来る障害だと思うんだけど。
Re:ちょっと違う (スコア:2, 興味深い)
受け入れ試験に「通って」て、悪意のある挙動でもないのに損害賠償ってのはなぁ...。
#「設定」だからオペミスの可能性もあるけどな。
Re:ちょっと違う (スコア:1)
そうだとしても「テストの段階で発見できたかもしれないミス」だと思うぞ。
うじゃうじゃ
Re:ちょっと違う (スコア:1)
構造体実体のサイズを使うべき所で、構造体へのポインタのサイズを使ってしまったのでは…。
上記のような定義があって、
「sizeof (Hoge) * 28000」とすべきところを、
「sizeof (HogeP) * 28000」としてしまった…、に1票。
なぜ間違いが起きたのか (スコア:1)
『エンジンが停止したので不時着陸した』
というのと同じで、なぜエンジンが停止したのか、とか、なぜ4バイトとしてしまったか
という原因の説明がありません。それ故の推測だと思います。
#大本営発表を鵜呑みにしないで自分の頭で考えよう。
Re:なぜ間違いが起きたのか (スコア:1)
普通に考えれば (スコア:1)
変更する変数を誤った、と考えるのが妥当でしょう
変数名が適当だったんじゃないのかな?
Re: (スコア:0)
試験のために (スコア:1)
--- Toshiboumi bugbird Ohta
Re:試験のために (スコア:3, すばらしい洞察)
たった89銘柄で落ちるってことは全然テストしてなかったに等しいでしょ。
東証は「丸投げしてて、うちにはテスト仕様書検査する人間すらいないんです、てへ」と公言した上で訴訟とかもうね。
Re:試験のために (スコア:2, 興味深い)
--- Toshiboumi bugbird Ohta
Re:試験のために (スコア:1, 参考になる)
「人為的ミスの可能性が高い」と言っているので,既に挙げられている「変数間違えちゃいました,てへへ」の可能性が高い気がしますね.
Re:試験のために (スコア:1)
--- Toshiboumi bugbird Ohta
Re:試験のために (スコア:1)
# 実際はどうなんだろ。
Re:試験のために (スコア:1)
で、納期的にゆとりがあれば、本当にシステムを壊しちゃう覚悟で(もちろん事前にバックアップを取っておいて復旧させる… リストアのテストを兼ねることになるし)ストレステストをやることもあるんだけど、今時はそう云う時間とコストをかけにくいよね<開発現場の事情
--- Toshiboumi bugbird Ohta
Re:試験のために (スコア:1)
なぜ88か (スコア:1)
Ω<プログラミング担当者がエリア88のファンだったんだよ!!
ΩΩΩ<な、なんだってー
#それはないだろ
Re:なぜ88か (スコア:1, おもしろおかしい)
また富士通か (スコア:0)
Re:また富士通か (スコア:1)
Re:また富士通か (スコア:1, すばらしい洞察)
契約がどうなってるんだか知らんけど。
ってか、度々トラブってるから何とかイケニエをつるさないと東証自体がヤバいんでしょ。
Re:また富士通か (スコア:1)
その期間であれば、瑕疵に対する責任は発生するのが一般的な契約。
損害賠償もだいたい契約書に記載があって、上限はシステム価格までになってるのが一般的。
東証と富士通だったら2005年の前例 [nikkeibp.co.jp]や、今年2月の前例 [nifty.com]があるので、その前例にしたがって損害賠償はないんじゃないのかな。
参考:@ITの検収と瑕疵担保期間の説明 [atmarkit.co.jp]
経産省のモデル契約書[pdf] [meti.go.jp]
システムダウンと損害賠償 [ntt.com]
Re:また富士通か (スコア:1)
段々ぐだぐだになっていく日本 (スコア:0)
投資家、つか海外機関投資家に見捨てられると言うか見捨てられつつあるって分かってるのかなあ。
富士通は取締役総退陣ぐらいのミスだと思うんだけど。
Re:段々ぐだぐだになっていく日本 (スコア:2, 興味深い)
富士通の競合のSIerも, この機に乗じて食い込もうとする腹が無いんじゃないかな. 最近の大型システムでは, ハードの利益なんかシステム構築の失敗で簡単に吹っ飛ぶので, 顧客側の体制がダメだとWin-WinならぬLost-Lostの関係にしかならないんですよね.
それを知った上での相互なれあい体制じゃあないかと思うんですけど. 東証が事実上, 国内では独占しているので成り立つ図式じゃないでしょうか. というか殿様商売?
同意 (スコア:0)
Re:同意 (スコア:1)
Re: (スコア:0)
銀行のオンラインとかちょっとダウンしたぐらいじゃ気にしないとか。
まぁ、証券市場じゃ洒落にならないかもしれないが…。
ミスがあったら叩くだけじゃ、よりいっそう萎縮するだけで意味無いですよ。
犯人捜しして袋だたきっていう日本人の悪癖は改めなきゃ。
ちゃんと原因究明と、再発防止のための「システム」を作る方向に向かないと、建設的とは言えません。
人間はミスをするって前提でシステム構築やテストを実施しないとね。
今回のも、えらく単純なケアレスミスだったじゃないですか。
※とはいえ、富士通はなー、とは思う…。どーせ下請けに丸投げじゃねーの?
Re:段々ぐだぐだになっていく日本 (スコア:1, すばらしい洞察)
ここで社訓を (スコア:1)
社員が働かないのが悪い.
Re:段々ぐだぐだになっていく日本 (スコア:1)
可能性が高いので、慎重にならざるを得ないのでしょう。まるで成績不良の
高校二年生に「このままでは三年生に進級できないので自主退学したら」と
言ったところ「高校三年生になれないなら、飛び級で大学一年生になる」と
返されるかのようですが。
Re:段々ぐだぐだになっていく日本 (スコア:1)
年金運用の大前提は、効率的市場仮説に従うことにあります。
つまり、世界市場をその比率で粛々と保持し続けることにあります。
あとは株式と債券の比率をコントロールすることです。
「過去100年のデータ」では、20年以上保持した場合、
株式が10%前後、債券は5%強のリターンになります。
(ただし、株式の短期的な変動は債券のそれよりも遙かに大きい)
5兆の赤字を出した時期のインデックスの騰落率を鑑みれば、
120兆分の5兆しか減じてないということは、あまりにも消極的な戦略であるといえます。
(特に日本国債を大量に保持していることはもっと責められても良い。)
詳細は「敗者のゲーム」とか、「ウォール街のランダムウォーカー」を読まれると良いかと。
お手軽にすませるなら「臆病者のための株入門」あたりを。
そっから先の戦略については省略で。
単なる想像だけど (スコア:0)
本来28000「レコード」の容量を確保するところを28000「バイト」にしちゃったとか. 1レコード318バイト(何かありそうな数字)とかだと計算が合いますから.
Re:システムが停止って? (スコア:2, おもしろおかしい)
Re:システムが停止って? (スコア:2, おもしろおかしい)
「鈴鹿サーキット」と「長島スパーランド」と「伊勢神宮」ですね。わかります。
あるいは「焼き蛤」と「松阪牛」と「真珠」か。
Re:システムが停止って? (スコア:1)
//自分の日記なのでID
Re:システムが停止って? (スコア:1)
>「焼き蛤」と「松阪牛」と「真珠」
「真珠」ではなく「赤福」でそろえて欲しかった
Re:システムが停止って? (スコア:1)
Re:お約束 (スコア:2, おもしろおかしい)
受注金額の2倍でよいですよね?
はい っ①①
スケープゴートが真犯人とは限らない (スコア:1)