システム利用環境を考慮していますか?

トラブル事例「第1回:Javaで重要なことは開発ではない?」では障害対応について、「第2回:障害発生を考えていますか?」では障害発生時にありがちな事例と対処法について説明しました。今回はクライアントPCなど、システム利用環境で発生しがちなトラブル事例についての対処法を解説します。

老川 正志

2007年9月19日 20:00

トラブル事例

「第1回:Javaで重要なことは開発ではない?」では障害対応について、「第2回:障害発生を考えていますか?」では障害発生時にありがちな事例と対処法について説明しました。今回はクライアントPCなど、システム利用環境で発生しがちなトラブル事例についての対処法を解説します。

実際にお客様のシステムで発生した障害において、次のような経験はないでしょうか。


  1. Webアプリケーションのシステムをリリースする直前、お客様から「Aという画面で、B操作とC操作をしたのに、ずっとB操作の内容が表示される」という連絡を受ける
  2. 連絡を受け、テスト環境で同じ操作を行っても正しく動作してしまう
  3. またログを調査すると、サーバ環境にはC操作のログが残っていなかった
表1:システム障害の例

原因はWebコンテンツのキャッシュ

このトラブル事例の原因は「Webコンテンツのキャッシュ」です。Webコンテンツのキャッシュは表2のような効果があり、アクセスのたびに変更がないコンテンツに対しては、非常に有用な機能となります。


  • サーバやネットワークなど、システムの負荷削減
  • 素早い画面表示(応答時間の短縮)
表2:Webコンテンツのキャッシュによる効果

しかし、Webアプリケーションのシステムのように、アクセスのたびにコンテンツが変わる場合は、逆に悪影響をおよぼします。特に、最近よくみられ るAjaxを採用したシステムは、画面でマウス操作やキーボード操作をするたびにコンテンツが変わるため、Webコンテンツのキャッシュが悪影響をおよぼ してしまいます。

Webコンテンツのキャッシュが悪影響をおよぼす理由

ここでは図1のような画面遷移をするシンプルなWebアプリケーション例に、悪影響をおよぼす理由について解説します。



Webアプリケーションの例
図1:Webアプリケーションの例

「1.検索キーワード入力画面」にて、利用者は検索キーワードを入力し、検索ボタンを押します。システムは入力したキーワードをもとに商品を検索し、「2.商品検索結果表示画面」を表示します。

このとき、「X」というキーワードで商品検索すると、「X」というキーワードの「2.商品検索結果表示画面」について、「http://www.sample.jp/resultのキャッシュ」として保存されます。次に「Y」というキーワードで商品検索すると、先ほど保存した「http://www.sample.jp/resultのキャッシュ」を使用し、商品検索結果画面を表示します。その結果、「Y」というキーワー ドの商品検索結果画面が表示されません。

キャッシュ機能を持つ機器

では、キャッシュ機能はどこにあるのでしょうか。Webブラウザが動作するクライアントPCからコンテンツを提供するサーバまでのネットワークをたどることで、キャッシュ機能を持つ機器をあげてみましょう。

社内ネットワークを利用する場合は図2のように、「クライアントPCにあるWebブラウザ」「プロキシサーバ」「Webサーバ」「アプリケーションサーバ」の4箇所でキャッシュが行われることが考えられます。


キャッシュ機能を持つ機器 - 1(社内ネットワーク利用の場合)
図2:キャッシュ機能を持つ機器 - 1(社内ネットワーク利用の場合)
(画像をクリックすると別ウィンドウに拡大図を表示します)

また、社内ネットワークではなくインターネットを経由すると、さらに機器は増えます。突然のアクセス増加に備えて、キャッシュサーバを設置している ケースや、コンテンツデリバリネットワーク(CDN:Contents Delivery Network)のサービスを導入しているケースも考えられます。


キャッシュ機能を持つ機器 - 2(インターネット利用の場合)
図3:キャッシュ機能を持つ機器 - 2(インターネット利用の場合)
(画像をクリックすると別ウィンドウに拡大図を表示します)

キャッシュを制御する必要性

このように、ネットワークには様々な箇所にキャッシュ機能を持つ機器があります。対策としてはキャッシュ機能の無効化をすることです。しかし、現実としてすべての機器に対して対応できないことがあるでしょう。

また、画像ファイルやスタイルシートはアクセスのたびに変更することはほとんどありません。そのようなコンテンツはキャッシュ機能を使うべきでしょ う。キャッシュ機能を無効化すべきなのは、アクセスのたびに変更するコンテンツであり、コンテンツによって適切にキャッシュを制御すべきです。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30