[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などではね.