はじめに
ASP.NET Webアプリケーションの運用開始日が近づいているが、パフォーマンスに少々問題がある――このような経験をした覚えはないでしょうか。開発者の目標は、正しいメモリ管理と、Webサーバーによる要求の処理方法を理解したうえで、適切に動作するWebアプリケーションを開発することです。しかし、この目標を念頭に置いてアプリケーション開発に取り組んでいるにもかかわらず、パフォーマンスを向上させるチャンスを見逃していることがよくあります。そこで本稿では、Webアプリケーションのパフォーマンスを簡単に向上させる5つのステップを紹介します。
1. データアクセスオブジェクトを適切に処理する
データアクセスオブジェクトが正しく処理されないことが、サーバー上のメモリを無駄にする原因の1つです。データアクセスオブジェクトを作成する場合は、その有効期間に加えて、不要になった場合の破棄の方法について正しく理解していることが重要です。私はこれまで、DataReaderを作成し、開き、使用して、破棄しない開発者を何人も見てきました。データアクセスオブジェクトは正しく管理するようにしてください。そうすれば、IISワーカープロセスがメモリを使用し続けて最終的にクラッシュするという問題の原因について悩まずに済みます。ソリューション内で、DataReaderのインスタンスを新規作成している箇所を検索してください。見つかった個々のインスタンスについて、それが適切に閉じられ、破棄されることを確認します。DataReaderを対象とするtry/catch/finallyブロックを使用するか、using文を使用して、例外が発生した場合はfinallyブロックでDataReaderを閉じ、破棄するようにします。
using文の例は次のようになります。
using (IDataReader reader = MySite.GetSearchResults()) { //Consume the datareader while (reader.Read()) { //Do something with the data } }
try/catch/finallyブロックの例は次のようになります。
IDataReader reader; try { reader = MyWeb.GetSearchResults(); while (reader.Read()) { //Do something with the data } } catch (Exception ex) { //Log the exception } finally { //Dispose the object if it exists if (reader != null) reader.Dispose(); }