日立、Webアプリケーション利用時のシステム障害を予防するソフト運用管理方式を開発
Webアプリケーション利用時のシステム障害を予防するソフトウェア運用管理方式を開発
サービスを停止させることなくメモリ不足となる現象を解消
日立製作所中央研究所(所長:福永 泰/以下、日立)は、このたび、Webアプリケーションのメモリリークによる性能低下やサービス停止などのシステム障害を予防するソフトウェア運用管理方式を開発しました。本運用管理方式は、サービスを稼動中にWebアプリケーションを代替系に切り替えることにより、蓄積した不要メモリを解放し、メモリ不足となる現象を解消するものです。本方式により、Webアプリケーションにメモリリークがあっても、Webアプリケーションの処理性能をほとんど低下させず、サービスを連続稼動させることができるようになります。本方式は、Webアプリケーションの24時間365日稼動に寄与する技術として期待されます。
アプリケーションプログラムのバグの一つに使用済の不要メモリを解放し忘れる“メモリリーク”と呼ばれるバグがあります。メモリリークは原因箇所の特定や修正が難しいバグの一つとして知られています。メモリリークのあるアプリケーションを長時間実行すると、性能の著しい低下やサービス停止などの障害が発生します。近年、Web技術の進歩により、多くのアプリケーションがWebアプリケーションとして提供されています。Webアプリケーションにおけるメモリリークに対しては、これまで、複数台のサーバ上で同一のWebアプリケーションを実行し、定期的に一台のサーバのWebアプリケーションの処理を他のサーバに切り替え、サーバを再起動する方法によって、Webアプリケーションの不要メモリを解放し、メモリリークによる障害発生を予防していました。しかし、アプリケーション切り替え時にサービスが停止したり、処理性能が低下してしまうことが課題となっていました。
このような背景から、サービスを停止させずに、かつ処理性能をほとんど低下させず、メモリリークによる障害の発生を予防するために、Webアプリケーションを稼動中に代替系に切り替え、蓄積した不要メモリを解放する制御方式を開発しました。本方式の特徴は以下の通りです。
1.サービスを継続させながらWebアプリケーションを切り替え
今回の方式では、現在稼動中のWebアプリケーション(現用系)と同一のWebアプリケーション(代替系)を起動し、ユーザからの新しいサービス要求の処理を代替系のWebアプリケーションで実行するように切り替えます。現用系Webアプリケーションは、切り替え後、停止・破棄します。これによって、Webアプリケーションを継続稼動しながら、現用系Webアプリケーションを実行して蓄積された不要メモリを解放することが可能となりました。
2.同一サーバ内でWebアプリケーションを切り替え
本方式では、同一サーバ内に現用系と代替系の2つのWebアプリケーションを起動し、それらを切り替えます。これにより、従来の複数サーバ間に跨って現用系と代替系を切り替える方法では、高負荷時にWebアプリケーションの処理性能が最大50%程度低下するのに対し、本方式の場合は、数%の低下に抑制できました。
今回開発した方式によって、Webアプリケーションが高い負荷で実行されていても、アプリケーションの処理性能にほとんど影響を与えることなく、メモリリークによるシステム障害を予防することができます。また、サービスに用いるサーバの台数を従来の構成より低減することも可能になります。本方式は、24時間365日継続してWebアプリケーションを運用するための核となる技術の一つとして期待できます。
なお、本研究の成果は、11月6日から米国のシアトルで開催している国際学会「OSDI : Symposium on Operating Systems Design and Implementation」にて発表しました。
以上