玄録

玄録は、秀玄舎の事例を通した、
実践研究の成果をご報告する不定更新の
ビジネスレポートです。

性能問題の原因と対策

性能問題を未然に防ぐには

2008.06.20

  • Facebook
  • mixi
  • hatena

性能問題は、色々なフェーズ(工程)で作りこまれてしまいます。性能問題を未然に防ぐためには、各工程で性能を意識した以下の対応をすることが最も重要です。

①要件定義フェーズ
 要件定義では、システムの想定とする最大データ量を明確に把握することが重要です。

②開発工程フェーズ

●基本設計
・ アーキテクチャ設計
Web系システムを構築する場合、単純に3階層モデル(Webサーバ→APサーバ→DBサーバ)にアーキテクチャを決定するのではなく、利用形態・データ量・保守性を考慮し、2階層モデル(Webサーバ→DBサーバ)も検討する必要があります。
また開発工程の短縮などのSaaS・SOAなどの利用も検討する場合は、ネットワークを経由するため性能クリティカルなシステムやSLAが十分にクリアできるか検討します。
・ 機能設計
各機能が一度に扱うデータ量を把握し、大量データをまとめて検索したり・一度に表示したりしないようにする機能仕様を検討します。

●詳細設計
・ データベース定義
性能を考えたデータベース構造(インデックス、テーブル構造)を作る必要があります。
大規模システムでは、段階的にシステムを増強できるための拡張性設計が必要となります。
・ アプリケーション設計
アプリケーションのクラス分けは、単純に機能単位に分類するだけでなく、性能を考慮した分類も検討します。

●プログラミング
プログラム内で扱うデータ量を意識し、プログラミングします。
ループなど終了条件は、できるだけ早く終了できるよう検討します。
SORT、複数テーブルの検索は、データベース機能を有効に利用します。

●テスト
性能評価のためのテストは、業務パターンに従い、「性能問題の調査方法  その1(システム全体の性能測定)」と同じように、性能評価対象アプリケーション動作中のCPU使用率、メモリ使用量(スワップ、アプリケーションごとの使用メモリ、物理メモリ)、ディスクI/O 、ネットワーク使用量を各サーバごとに同時に測定します。
性能評価ができるように、最低3通りの測定を実施する必要があります。
・ 性能クリティカル度が高い場合
 機能テストと並行して早期に性能評価を開始し、システムテストで最終確認をします。
・ 性能クリティカル度が普通の場合
 機能テスト完了後のシステムテストにおいて、確認します。
  この段階で性能が満足できない場合は、今までの説明と同じ手順で性能問題の解決を行います。

●性能評価
測定された性能データから、将来のピーク時に問題が発生しないように、メモリ使用量、必要CPU能力、ディスク量、ネットワーク量を論理計算します。

●保守
逐次システムのCPU率、メモリ使用量、ディスク量、ネットワーク量など監視し、閾値を超えたものに対し増強を実施します。

品質の一つとして認識し、各開発工程で性能品質を作りこむ作業を実施することが重要です。