岡崎図書館HP大量アクセス事件の真犯人はどうやら「コネクションプーリング」らしいことが

2010/8/31 ここから追記

当初、『見えてきています。』という内容で投稿しましたがコネクションプーリングは関係ないそうです。間違った事実を広めてしまいましてすみませんでした。DBとの接続ができなくなる何らかの不具合という事象の原因としてtwitter等でコネクションプーリングを原因とみる人を見かけたので自分もそう思い込んでいました。プール可能な接続数を使い切るのではなく、コネクションプーリングを使わないでDBと接続する際のDB側のコネクション数の上限に達してしまう事象だったようです。

コネクションプーリングによる接続数の上限は通常Webサーバ側での制限事項になりますので似ているようで大きく違いますね。DBが異なるAPを積んだ2台以上のWebサーバから接続を受けているケースを考えますと片方のWebサーバでコネクションプーリングの上限に達したとしても他方のWebサーバは元気に動きます。ところがDB側のコネクション数の上限にまで達してしまうとWebサーバ2台とも接続不能になってしまいます。以上、追記でした。

そのバグを作りこんだのは誰か?というのはプログラマ一人の責任から発注者、受注者の両者を踏まえた責任分界から、利用者の利用形態まで様々な要素が入り交じった問題となりますので今後の解明を待ちたいところです。

さてこの件ではコネクションプーリングをONにしたのに破棄についてよく考えていなかったというお行儀の悪さが報道されました。私個人の経験から言いますと、世の中にはこのような製品・サービスもありますのでこういった観点からテストを行なっていれば発見し得るバグだったのではないかな、というように考えております。ネットや新聞で知った内容から考えるに、正常時の負荷しか検証していなかったのではないかという疑念を感じます。

日本シー・エー・ディー小俣さん+豆蔵さんと「ゼロから見直すWebシステムの負荷テスト・性能テスト」セミナーを開催します

しかしそのような推論をしてもあまり建設的ではないですし、この件だって犯人探しをするよりも日本のシステム業界を全身させるために必要な神様のいたずらだったと考えたほうが得策です。私個人も何か貢献できればと思い、負荷テストで発見できなかった「低負荷で落ちる」システムについて述べたいと思います。ただし、私自身がその継続的な開発・運用のメンバーから外れておる関係で細部の記録にアクセスできません。記憶を中心に書きますのでおかしな部分があったらコメント欄等にて補足をいただけますと幸いです。

私が担当したシステムではごく一般的なDBサーバにごく一般的なWebサーバを組み合わせて使用。デフォルト値のコネクション数を使って動いていました。DBサーバとWebサーバのセグメントの違いから、間にNW機器が置いてありました。

負荷テストも行い、ほぼMAXで使用した場合のスループットを測定しました。DB単体でのスループットからオーバーヘッドを割り引いて見積もったスループットは、負荷テスト結果とほぼ同じような値が出ました。

しかし残念ながら本番で謎の障害が発生します。ログから発見されていたエラーがあったのですが、ユーザ側からの問い合わせがなかったために情報共有をして事態を見守ることに。後日、何件目かでユーザ側ヘルプデスクに問い合わせが発生、ログ上のエラーはユーザ側に影響のある「障害」に格上げされました。

そこで調べに入ったのですが、パフォーマンス情報等によると「使われていない」時間帯です。コネクションプーリングということで接続数が上限に達したような障害ケースが強く疑われたわけですが、どうもそういうわけではなさそうです。よくある、ユーザ側は画面を閉じていてもセッション上に接続情報が維持され……というケースでもないようで、障害発生時点のコネクション数は1本とか2本という数字でした。

結局は「人間」の部分がすべてを解明してくれました。「どうも昼休み明けに発生することが多い気がする」という証言を手がかりに、そうだとしたら負荷ではないところが怪しいのでは?という疑いの方向転換が行われます。ならばということで同じ環境を作って「昼休み」を再現することになりました。しかし「昼休み障害」は発生しません。障害調査用の環境と本番環境の違いを検証すると、NW機器が置いてあるか否かの1点しか違いがありません。

ではNWレベルの障害では、ということで本番環境上でNWの監視を行ってみることになりました。IPアドレスが重複する何か、とか、NW機器が再起動する何か、とかが見つかるかもしれません。すると、謎のですが、DBサーバめがけてRESTパケットが飛んできて、Web側もDB側もコネクションを維持しているつもり十分なところでDB側がコネクションを切ってしまうという事象が発見されました。原因はNW装置が15分以上使用されていないコネクションを切る設定になっていたので。そんなもんあるのか?と思ったのですが装置によってはそういう設定もあるようです。

これはDB側に「予期せぬ原因でコネクションが切れました」というエラーログが記録された事実と一致します。障害調査環境でRESTパケットを投げてみたところ(私は投げ方がわからなかったので分かる人にやってもらったのですが)同じエラーログが記録されました。

そしてその状態でWeb側というと、自分はコネクションが切れたことを知りません。そのため「あるもの」と思って切れたコネクションを使ってしまってその一連の問い合わせが終了してしまうということになりました。

もっとも、障害の一番初めに対症療法的かつ当てずっぽう半分で、Webサーバ側の「コネクションの有効性を確認してから接続する(Validate Connection)」オプションを有効にしましたが、これが機能して障害は一時的に完全に止まっていました。全体的な構成を見て、コネクションの有効性を確認するオプションをOFFにし、NW装置が勝手にコネクションを切断するまでの時間をコネクションプーリングが維持される上限の時間(Connection Lifetime)よりも長く取って完全に対処完了となりました。

この件はもうずいぶん前の話なのですが、気を遣った部分だったせいか資料もない割に今でもよく覚えています。

感想を一言で述べるならば、数十人の人間の想像力が数千人の人の行動に及ぶわけがない、ということでした。私は1年以上開発の現場から遠ざかっておりますが、他の人の話など聞くと、障害の発生を防ぐための努力の一部は発生後の影響を最小限に抑えるための努力に振り返られても良いのでは?と思うことがあります。

yohei

Special

- PR -
コメント
ぐて~ 2010/09/01 05:58

岡崎市立中央図書館の件と比較して考えると…
原因究明に至らなかった場合、そのシステムの利用者が逮捕されましたか?
と言うことは聞いてみたい。

システムに不具合は付き物で不具合は無い方が良いに決まってますが不具合の調査をいい加減で他人のせいにすることも少なくないのも多く見受けられます。
同一社内で複数の要員が開発していたりしても他人が作りこんだ不具合が原因だとして調べたら他人じゃなくその人が作りこんだ不具合だったりすることも少なくなかったり…

それが別会社が複数関わる案件だったりすると開発時も運用時も他社の原因だと言いつつこっそり直すルートや方法があればそんなことすらするところも見たことがあります。

岡崎市立中央図書館では調査不足でもあったであろうし調査に関わった人の知識やスキルも致命的にレベル不足だったと思われる上に利用者逮捕です。

こういった運用側の低レベルにより利用者が社会的に抹殺されかねない事態になるのを防ぐにはどうすべきか考える時期に既に突入してるように思いますが解決策を見出せてないのも現在の状況じゃないでしょうかねぇ…

yohei 2010/09/01 21:01

ぐて~さん、コメントありがとうございます。
システムの利用者が逮捕されるようなことはやはりなかったですね。
これとはまったくの別件になるのですが、同じくなかなか障害の原因解明がうまくいかなかったことがありました。ただし「引き金を引くことが多い」人がおり、濡れ衣を着せかかった経験があります。別に非難したりということはなかったのですが、何か特殊なことをしていないかどうか聞いたり、PCの環境を調べたりということをさせていただきました。
ヤミ改修は日本のIT業界の良くない風習ですね。発注者、開発者、運用者の役割分担がうまくできていないことの現れかもしれません。この件を通してはスッキリしない思いも多いのですが、ボランティア的に自分の知識や意見を発表して業界をよくしていこうとする方がたくさんおられます。IT業界に従事していてよかったなぁと思いました。そういう方々の活躍を見て自分も何か、と思いこのエントリを書きました。

ぐて~ 2010/09/02 13:22

私が想定実験を行ったのは、それまでに何人かがかなり具体的にサーバ側とのやりとりを推定していたのでその推定が同様の結果を起こすかと言うことと私自身もサーバ側実装の不具合であろうと推測しましたので不具合の原因に少しでも近づければと言う思いで実験を行いました。

幸い開発仕事を長年やっていて各種環境を作りえるものがありましたので出来るだけ近いもので実験してみようと…

予定されていたことでもなくおそらく偶然やいろんなことが積み重なってリアルに実物な検証対象が朝日新聞経由で検証を依頼された方々に渡され実装上の不具合が原因であると判明したのですがあれが無ければもっと時間がかかって興味も記憶も消えていった人も多かったのかもしれないしもっと有耶無耶で逮捕が行き過ぎであると言う認識ももっと小さかったかもしれないと思ったり…

現時点では残念な態度で隠し事や否認をする方々や利用者はサーバを停止させないように使うべきだというようなwebサービスの概念の根底を覆すような考えを持った人たちの主張も出て来て混迷してるような面もありますが、多くはサーバ運営側での運営と努力で回避出来ることでしたし、過去から現在は。

それを変な世界や変な常識にしてはいけないと延々と見続けています。

yohei 2010/09/03 00:07

ぐて~さんのブログのレポート非常にわかりやすかったです。参考になります。
私の経験からしますと、ぐて~さんの作ったような具体的なレポートを出してもお客様にとって難しすぎくなってしまいがちです。もちろんわざと難しくして煙に巻くような説明になってもいけません。しかしだからといって「どうせわからないだろう」と曖昧な説明をしているといつまでたってもIT技術者とお客様との溝が埋まらないですね。技術者はそのギャップを埋める能力も求められていると思います。
IT技術者の多くが一度は受験する情報処理技術者試験にはシステム監査やシステム管理の項目がありますが、新人さんが受けるレベルの区分ではあまり出てきません。もう少し厚みを増してもいいかもしれませんね。


コメントを投稿する
メールアドレス(必須):
URL:
コメント:
トラックバック

http://app.blogs.itmedia.co.jp/t/trackback/77444/24966459

トラックバック・ポリシー


» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

山口 陽平

山口 陽平

国内SIerに勤務。現在の担当業務は資金決済法対応を中心とした資金移動業者や前払式支払手段発行者向けの態勢整備コンサルティング。松坂世代。

詳しいプロフィール

カレンダー
2012年2月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
カテゴリー
エンタープライズ・ピックアップ

news094.gif 富士通元社長の山本卓眞氏が残した次代へのメッセージ
富士通の社長、会長を務めた山本卓眞氏が亡くなった。哀悼の意を込めて、日本のIT産業界の大御所が残した次代へのメッセージを紹介しておきたい。(2/6)

news094.gif Facebook就活はもう古い?
約260人のブロガーが、ITにまつわる時事情報などを日々発信しているビジネス・ブログメディア「ITmedia オルタナティブ・ブログ」。その中から今回は「就活」「都心の雪」「ソーシャルメディア」などを紹介しよう。(2/4)

news094.gif 東北をコットンの生産地としてブランディングしたい──リー・ジャパン・細川取締役
塩害に強い綿の生産で東北に新たな産業を作りたい。オーガニックコットンの採用など、環境負荷を下げるジーンズ生産に取り組んできたリー・ジャパンの新たなチャレンジとは──。(1/30)

news094.gif 東北から始まるイノベーション
企業のICTを活用と若手IT技術者による東北発のイノベーションが、中長期的な震災復興の鍵となる。(1/27)

news094.gif 貧困国の雇用を創出する印刷屋、丸吉日新堂印刷の挑戦
全国から約2万7000件の名刺制作を受注をする札幌の小さな印刷会社の成功の秘密は、地道な社会貢献にあった。(1/16)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。

Special

- PR -

サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ