作成日: 2007年10月5日
作成者: Morimoto
最終更新日: 2007年10月5日
ColdFusion8では、AJAX・.NET等との連携や、Admin機能が大幅に強化されました。今回はその中でもServer Monitoring機能を中心に、機能概要の紹介・レビューを行おうと思います。
Server Monitoring機能はColdFusion8で追加された監視機能で、ColdFusionサーバのオペレーションに関する情報を提供します。このおかげでチューニングや現状の分析を行いやすくなりました。ただ、本機能を使用できるのがEnterprises版のみというところが残念ではあります。
機能の内容としては、関数・クエリーの実行時間の監視や、メモリトラッキング等を行う事ができます。詳細は以下の表を参照してください。情報の表示方法としては、ビルドインのモニター画面が用意されており、一覧画面と詳細画面で確認する事ができます。詳細情報としては、「対象のテンプレートのパス」や、「クエリーが記述されて行番号」のような十分なレベルまで確認する事ができます。それでは、それぞれの機能についてみていこうと思います。
・Server Monitoring機能(サマリー)
Server Monitoring機能のトップ画面として、ダッシュボード的な画面(スクリーンショットを参照)が用意されています。表示する項目の選択は行えませんが、重要な指標となるデータは確認する事ができます。また、表示項目からリンクが張られており、詳細・関連データの確認も容易に行う事ができます。
・Server Monitoring機能(リクエストの統計情報)
リクエスト・スレッドの使用頻度の高いものや、低速なものを特定する事ができるので、パフォーマンス改善のため、修正場所のめぼしを付ける事ができます。また、テンプレートキャッシュのヒット率やサイズを確認できるので、それを基にキャッシュに入れるテンプレート数を調節する事が可能です。
次に、取得できない情報として、「ヒット数の多いリクエストでのクライアントIP」「使用頻度の低いリクエスト情報」があげられます。アクティブなリクエストのIPは確認できますが、過去リクエストについては、クライアントIPを特定できません。クライアントIP内訳を確認できれば、問題が発生したときに調査しやすくなると思います。さらに、使用頻度の低いリクエストを特定できれば、再開発時に使用されていない機能の簡略化を行いシステムのスリム化や効率化につなげることも容易に行えます。
この履歴取得のような部分は、作りこみの範囲になるのかもしれませんが、同一系統の機能として組み込んであると、使用用途も広がるのではないでしょうか。
・Server Monitoring機能(メモリ使用量)
リクエストやクエリー単位でのメモリ使用量の確認を行う事ができるので、運用時はもちろんのこと、開発・テスト時にも便利に利用できます必要以上に多くのメモリを消費するリクエストや、クエリーを早い開発の段階で特定し早急に対策を打つ事で、開発品質の向上につながります。
・Server Monitoring機能(データベース)
データベースへのクエリーについて、クエリー発生元テンプレートのパス・行番号や、クエリー名・データソースを確認する事ができます。確かに、DB側の機能を使用してもクエリーのパフォーマンス等を確認する事ができますが、Server Monitoringの画面で確認を行う事で管理を一箇所で集中的に行う事ができ効率、質の向上につながります。しかし、Server Monitoringの機能ではクエリーのSQL文のなど、細かな部分の確認は行う事ができないため、Server Monitoringで確認が必要なクエリーを特定し、DB側でクエリーに対する詳細情報を確認するといった管理方法が適していると思われます。
・Server Monitoring機能(エラー)
エラーが発生した場所を示すCFMLとJavaの両方のスタックトレース、発生時刻などが取得できますが、エラーの発生がクライアントからのリクエストが原因の場合であっても、クライアントIPの表示がされていません。エラー発生の事実や、原因の特定には役立つかもしれませんが、これだけの情報では、事後フォローには不十分と思われます。
・Server Monitoring機能(アラート)
特定のイベントについてアラートを設定する事ができます。アラートに対するアクションにも、電子メールの送付やスレッドのキルを行うように設定できるので十分だと思います。
実装されてはいませんが、エラーに対するアクションの設定(電子メール送付など)を行う機能もほしいところです。
Sever Monitoring機能とは別に、今回新たに追加となった、Admin機能について少し紹介します。
・リクエストの調整
以前のバージョンでは、同時リクエストの最大数として1つの値を設定する形でしたが、今回は、テンプレートリクエストやFlash Remotingリクエスト、Webサービスリクエスト、CFC関数リクエスト毎にそれぞれ最大数を設定できるようになりました。
・ユーザーマネージャ
Admin機能を使用するユーザの追加が行えるようになりました。権限としてRDSへのアクセス管理アクセス、Server Monitoring、などさまざまなロールを設定できるようになっています。
今回は概要レベルでの紹介だけですが、サーバの管理・運用の面からすれば、かなり便利になっています。Server Monitoring機能については、開発者の観点からすれば、「チューニング」以外の追加機能として物足りない部分も多少ありますが、「サーバのモニタリング」、「パフォーマンスチューニングの材料」としては十分な機能を備えています。