[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 11040] テストの過大評価.
並列処理に拘りのある 村山@netgeneです.(^^;
こんな記事が出てました.
・「統合ATMが陥った“テスト不足”の落とし穴」
http://itpro.nikkeibp.co.jp/members/SI/ITARTICLE/20040226/1/
「経路管理プログラムは,経路管理テーブルからレコードを順番に読み込んで
「空き」を探すが,その際,レコードごとに排他ロックをかけていたのだ(図
2[拡大表示]の左)。「空き」が少ない状況で,読み込むべきレコード数が増大
し,“排他”によるオーバーヘッドが性能を著しく低下させた。」
これはRDBMSのロックだろうからJavaと直接の関係はありませんが,並列処理に
おける同期の怖さを物語ってます.(文中では並列処理が行われていたか明記
されてないようだが,まさかいくらなんでも逐次で動かしている時にDBのロック
を使うほど愚かではあるまい.多分...)トラブルがどういう条件で発生する
のか予測できないし,しかもそれを負荷テスト程度で洗い出せる保証はない.
そういう意味では「テスト不足の落とし穴」というのは,ちょっと違う気がしま
す.「十分にテストすれば,どんな問題でも見つけられるはずだ」という,テス
トに対する過信がこういう結果に繋がっている恐れがあります.
#このような性質は,Javaのsynchronizedメソッドなどでも多分同じはずです.
#みなさんも,排他制御は十分注意して使いましょう.特にサーバーサイドや
#HyperThredingなどではね.