SE関のノーツ/ドミノ徒然草: 第16回 ノーツサーバーはなぜ落ちる?

ノーツの運用管理の話でよく話題になるのが『ノーツサーバーが落ちてしかたがない』と言ったサーバーの安定性の話です。電子メールを毎日使ったり、直接業務に関わるデータベースが増えると、ユーザーにとってはノーツサーバーのダウンは確かに大問題です。今回はこのノーツサーバーのダウンについて考えてみましょう。

Lotus クライアント テクニカル プロフェッショナルズ, ソフトウェア事業, 日本アイ・ビー・エム株式会社

Lotus クライアント テクニカル プロフェッショナルズ, ソフトウェア事業, 日本アイ・ビー・エム株式会社



2004年 8月 08日

そもそもノーツサーバーはどうして落ちるのでしょうか。それはハードウェアの障害であったりもしますが、多くの場合ノーツサーバープログラム自身かそれを動かしているオペレーティングシステムのバグが原因でしょう。何かの処理の途中でバグにあたり、サーバープログラムまたはオペレーティングシステムがおかしな状態になり続行不能になるのです。『そんなことは当たり前だから、早くノーツサーバーやオペレーティングシステムの品質をあげてくれ』と怒りの声が聞こえてきそうです。確かにそのとおりです。ただ全てのソフトウェアに共通で言えることですが、バグのないプログラムなど存在しません。ではこのバグとどう付き合っていけばよいのでしょう。

まずどんな時にノーツサーバーが落ちるかを実際聞いてみると、こんなことがよく言われています。『かなりの数のユーザーが同時にサーバーにアクセスしているようだ』。『エージェントをガリガリまわすデータベースがある』。『新しいリリースの新しい機能をバリバリ使っている』。『巨大なデータベースでかなりの負荷がかかっているようだ』。『メモリーが足りなくてページングがしょっちゅう起きているようだ』。これらは感覚的ではありますがバグにぶつかる確率が増えそうな現象です。人間でも覚えたての仕事を、かなりの量、しかもいろいろな仕事と合わせて要求されたときダウンしそうになるのは似たような話かもしれません。

では実際どのようにしてノーツサーバーを安定化させているか聞いてみるとこんな答えがよく返ってきます。『毎日とか毎週ノーツサーバーをリブートしてきれいな状態にしてやる』。『サーバーに無理がかからないようにユーザー数を減らすよう努力している』。『メールやワークフローそしてライブラリーなどデータベースの種類ごとに専用のサーバーをたてている』。『エージェントは別のサーバーで走らせている』。『とにかくデータベース規模を小さくして複雑な処理はデータベースから取り払う』。これらはいずれも経験的なものですがどうも効果があるノウハウのようです。言い換えれば、『負荷を下げて、時々リブートしてやり、処理も簡単にする』というのがどうも本質的なことのようです。実際、同じようなノウハウはPCサーバー上でリレーショナルデータベースのシステムを構築するような場合でも、プロの設計者から聞かれる話ではあります。

これらのノウハウは経験的とは言え、ある程度の理論的説明がつけられない訳ではありません。サーバーのプログラムはバグによってよくいろいろなごみを出します。メモリーリークという使いおわったメモリーをごみとして残していく現象もその一つでしょう。このごみを放っておくといつかはパフォーマンスの劣化やサーバーダウンにつながります。これをきれいに掃除するにはサーバーのリブートが最も簡単な方法です。またサーバーの負荷を高くしたり、複雑な処理をしたり、いろんな処理をごちゃ混ぜにしたりするのは、サーバープログラムやオペレーティングシステム内でめったに通らない例外的なプログラムコードを走らせたりすることになります。それをしないためには単純には負荷をさげて、できるだけ処理を簡単にしてやることです。

ただこのようなノウハウを適用してもやはりノーツサーバーは落ちることがあります。その理由はこんなところにもありそうです。ノーツの処理つまりトランザクションは実に多様です。ユーザーといっても超エンドユーザーからスーパーユーザーまでの千差万別のユーザーが自由きままに数多くのいろいろなデータベースを眺めて文書を読んだり書いたり、またビューの検索や全文検索も試されます。負荷は朝などの時間帯にメールの利用増加とともに異常に集中し、さらに新しい人気データベースなどがユーザーから登録されると予想もしない負荷がサーバーにかかります。今までのシステムのように、比較的きまった人が、ある程度きまった処理を、ある程度きまったデータベースに対してするというシステムとは訳が違いそうです。これはグループウェアという新しい処理分野の特徴かもしれません。処理の予測困難さ、そして超多様性、いかにもバグのありそうなところをつつきそうで、かつ運用管理者にとっては実に頭の痛い問題です。

またノーツサーバーはその出発点からPCサーバーを使っていました。これも一つサーバーダウンに関係しているかもしれません。PCサーバーでは何かオペレーティングシステム自身でおかしな状況を見付けると、多くの場合オペレーティングシステムがダウンするようになっています。大型汎用機やUNIX機のオペレーティングシステムではそうではなく、おかしな事が起こったらできるだけ回復を試み、それで駄目ならそれに関係するところだけを終わらせて、全体としては動き続けようという姿勢です。ノーツサーバー自身もどちらかというとPCサーバー的な方針をとっているようですから、何かが局所的に起きてもシステム全体のダウンにつながる恐れがあります。『おかしくなったら仕事はやめよう』とオペレーティングシステムとノーツサーバーが言っているのですから、ダウンは否応にも増えるでしょう。

またPCサーバーの現実の使われかたもかなり過酷です。大型汎用機ですとできるだけCPUなどの使用率を低くすることがトラブルを未然に防ぐ秘訣であるということは知られていますから、CPUなどの資源は時々監視されて平均で70%や80%も使っていたら、これは危ないということで上位機種にグレードアップか負荷を下げる努力をするかです。PCではどうもCPUなどの資源がどのくらい使われているかについてはややもすると無頓着になり、ノーツサーバーとリレーショナルデータベースサーバーとファイルサーバーを1台のPCサーバーで使いながら、『サーバーが落ちるからなんとかしてくれ』と言われてしまいます。

ところで大型汎用機と言えば基幹システムを支える要で安定性については疑問の余地がないでしょう。この大型汎用機の昔の話を当時のSEさんに聞いてみました。すると、『昔は大型汎用機のオペレーティングシステムもバグだらけだった』という答えが返ってきました。ではどうやってその上で基幹系のアプリケーションを稼動していたのでしょう。そのSEさんによると、『どうしたら落ちるかについて徹底的に調べて、どうすると落ちないかのノウハウをお客様もSEも蓄積してなんとかしていた』と言うのです。つまりプログラムはプログラム、特に新しいものなどはバグがあって当然なのかもしれません。ただそれに対して丹念に経験的なノウハウをためてなんとか乗り切っていき、またそれらのメーカーへのフィードバックによりそのプログラム自身も信頼性が高まっていくということなのでしょう。今、世の中で信頼性の高いと言われているシステムが、昔は信頼性の低い時代もあったというのはSEとしては少しほっとする話ではあります。

若さゆえの未熟さというのもあります。ただ若さゆえの革新的なものもあります。若者の革新的な部分の恩恵を受けるには少し大人の視点で若さを見守っていくことも必要かもしれません。大型汎用機という道具が未熟だったころの付き合いかたや育てかた。そんなノウハウは今のノーツでも参考になります。

ただ、もちろんちゃんとした大人に成熟してもらうためには厳しい教育、言うならば信頼性の高い製品にする努力は怠らないようにしてもらわなければいけないでしょう。ロータスにはしばらく気合を入れて頑張ってもらいたいものです。これだけ広がりユーザーにとっては不可欠となったノーツですから。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=338990
ArticleTitle=SE関のノーツ/ドミノ徒然草: 第16回 ノーツサーバーはなぜ落ちる?
publish-date=08082004