企業IT最適化のゴールを目指す

サーバダウンは起こるもの。だがユーザーには迷惑をかけない!Cosminexus V8 Review

Webシステムを安定稼働させるための課題は、メモリ管理方式だけではない。想定外のリクエスト集中でもシステムを止めない工夫や、部分障害の全体波及を食い止めたり,障害の兆しを検知して先手を打ったりする必要がある。

» 2008年11月17日 08時00分 公開
[友成文隆(日立製作所),ITmedia]

想定外のリクエスト集中にも耐える

 サイトへのリクエスト数はいつも一定ではなく、新商品の発売や月末など、リクエスト数が突発的に増えることがある。突発的にリクエスト数が増えても安定してシステムを運用するために、アプリケーションサーバに入ってくるリクエスト数を制限したり、重要なリクエストを確実に実行するよう、制御したりすることが必要だ。

 Cosminexusの流量制御では、同時実行数や占有スレッド数といったパラメータをきめ細かく設定できる。同時実行数は、並行して同時に処理可能なリクエスト数であるが、「多ければ良い」というものではない。適度に抑えないと無制限にリクエストを受け付けてしまって、システム全体がスローダウンするからだ。つまり、すべて受け付けるのではなく、能力に応じて“待たせる”ことが大切だ。

 また、重要リクエストを確実に実行するためには、業務によって占有スレッド数を指定することが有効である。例えばWebショッピングサイトでの「検索」と「購入」では、検索リクエストのほうが圧倒的に多いことが予想される。しかし、検索と購入を平等に扱うと、検索が殺到したときに購入が長時間待たされ、ショッピングサイト利用者は買う気がなくなってしまうだろう。このような場合には、購入リクエストに占有スレッドをいくつか割り当てておくことで、購入への影響を最小化できる。

同時実行数や占有スレッド数を設定して想定外のリクエスト集中に耐える 同時実行数や占有スレッド数を設定して想定外のリクエスト集中にも耐える

部分障害の全体波及を食い止める

 リクエスト処理の中でプログラムがループしてしまったり、データベースや他システムから応答がないためにWebシステムが停止しているように見えたりすることがある。例えば、検索処理を実行している1つのスレッドがループしてしまうと、そのスレッドがCPUを激しく消費し、ほかの検索処理や購入処理をしているスレッドの処理が進まないという事態が発生する。システムの一部の障害は、システム全体に波及してしまう危険性を持っているのだ。Cosminexusは、業務プログラムの処理時間を監視し、一定時間たっても処理が終了しないスレッドを検知するとシステム管理者にエラーを通知したり、キャンセル機能によって問題のスレッドを打ち切ったりする。

障害の兆しを検知し、先手を打ちシステムを回復

 24時間365日のシステム稼働が当たり前になった現在、メモリ、スレッド、ファイルといったリソースの枯渇はシステムの長時間の安定稼働を脅かすものとなっている。Cosminexusではこれらリソースの消費量を定期的に監視することができ、さらに決められた“しきい値”を超えた場合のアクションを設定できる。リソースが枯渇しそうになったら、システムを部分的に閉塞して再起動するといった、自律的な障害回避を実現可能だ。

サーバダウンしてもWeb利用者に迷惑をかけない

 Webショッピングサイトでは、Web利用者はまずシステムにログインした後、購入を決めた商品をカートに登録していく。このときのログイン情報や購入を決めた商品の情報は、アプリケーションサーバ上のWeb利用者ごとにもつ“セッション”に記録されていく。通常、セッションはメモリ上に配置される。

 一方、前述までのさまざまな機能を駆使しても、OSのクラッシュやハードウェア障害などでアプリケーションサーバが停止してしまうことがある。アプリケーションサーバが停止してしまうと、メモリ上に記録されているセッションは消えてしまうため、サーバダウン発生時に買い物中だったWeb利用者は、再度システムにログインし、あらためてカートに商品を登録しなければならない。このような状況になったら、Web利用者は買い物をしなかったり、今後このサイトを利用しなかったりする可能性がある。

 これを解決するのが“セッションフェイルオーバー”である。セッションフェイルオーバー機能では、セッションをデータベースなどに逐一記録する。下図で「サーバ#1」がダウンした際には、「サーバ#2」が「サーバ#1」にあったセッション情報を引き継ぐことで、Web利用者はサーバダウンの影響を受けない。

ユーザーやサーバダウンの影響を受けることを防ぐセッションフェイルオーバー ユーザーやサーバダウンの影響を受けることを防ぐセッションフェイルオーバー

 過去3回は、システム運用の安定稼働を視点にCosminexus V8について解説してきた。次回からは視点を変え、Cosminexusの開発環境について述べたい。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ