15のパフォーマンスのボトルネックを見つけて修正する

「ボトルネック」は、見事に説明的な用語です。これは、何らかの形の通信、相互作用、または情報の転送に対する人為的な制約について説明しています。そして、運、お金、そして創意工夫の魔法の組み合わせがそのボトルネックを打ち破り、すべての良いものを流すことができると信じるようになります。

パフォーマンスのボトルネックの問題は、特定が難しい場合があることです。CPUですか?ネットワーク?不器用なコード?多くの場合、最も明白な原因は、実際には、より大きく、より神秘的な何かの下流にあります。そして、パフォーマンスの謎が未解決のままである場合、IT管理者は、無知を認めるか言い訳をするかというホブソンの選択に直面する可能性があります。

幸いなことに、医学的診断や探偵の仕事と同様に、経験が役立ちます。長年の調査と実験に基づいて、IT運用がパフォーマンスの問題を追跡し、解決するのに役立つ、最も可能性の高い15の病気(および推奨される解決策)を収集しました。

これらのボトルネックのいくつかは、他のものよりも明白です。おそらく、あなたはあなた自身のいくつかの卑劣なネタバレについて何か言いたいことがあります(そして私たちはそれらについてのあなたの話を聞いてみたいです)。しかし、IT分野全体で共通のスピードキラーを特定することで、リソースが許容する最高のパフォーマンスのインフラストラクチャを作成するという探求をすぐに開始したいと考えています。

1位:おそらくサーバーではない

すべての違いを生むために使用されたサーバーのアップグレード。そのため、「他のすべてが失敗した場合は、より多くのハードウェアを投入する」という古い見方が今日も続いています。それは場合によってはまだ当てはまります。しかし、実際にどれだけのITが計算集約的でしょうか?一般に、毛むくじゃらの眼球をサーバーハードウェアから遠ざけることで、多くの時間とお金を節約できます。サーバースペクトルの下端には、日常のタスクを処理するのに十分な馬力があります。

これが1つの具体的な例です。125人を超えるユーザーのネットワークでは、古いWindowsドメインコントローラーは交換の準備が整っているように見えました。このサーバーは元々Windows2000 Serverを実行していて、しばらく前にWindows Server 2003にアップグレードされましたが、ハードウェアは変更されていません。1GhzCPUと128MBのRAMを搭載したこのHPML330は、すべてのAD FSMOの役割を担い、DHCPおよびDNSサービスを実行し、IAS(インターネット認証サービス)を実行するActiveDirectoryドメインコントローラーとして機能していました。

糖蜜でしょ?実際、それは実際にうまく機能しました。その代替品は、3Ghz CPU、1GBのRAM、およびミラーリングされた72GBSCSIドライブを備えたHPDL360G4でした。これらすべてのサービスを実行しているため、負荷はほとんど発生せず、パフォーマンスの違いは目立ちません。

すべてのCPUとメモリを消費するアプリケーションを特定するのは簡単ですが、それらはかなり特殊化される傾向があります。他のほとんどすべてのために、謙虚な商品ボックスはトリックをします。

2番目:それらのクエリをスピードアップする

世界で最も気の利いたアプリケーションを作成できますが、バックエンドデータベースサーバーへのアクセスがボトルネックになると、エンドユーザーや顧客は満足できなくなります。したがって、これらのデータベースクエリを微調整して、パフォーマンスを最大化します。

3つの基本的な対策は、クエリのパフォーマンスを向上させるのに役立ちます。まず、ほとんどのデータベース製品には、開発中に照会を分析して、構文に関するフィードバックとSQLステートメントのさまざまなセクションのおおよそのタイミングを提供できるツール(DB2 UDB foriSeriesのVisualExplainなど)が含まれています。この情報を使用して、クエリの最も長い部分を見つけ、それらをさらに細かく分類して、実行時間を短縮する方法を確認します。一部のデータベース製品には、Oracleの自動データベース診断モニターなどのパフォーマンスアドバイスツールも含まれており、クエリを高速化するための推奨事項(新しいインデックスの作成を提案するなど)を提供します。

次に、ステージングサーバーでデータベース監視ツールをオンにします。データベースに監視サポートがない場合は、FideliaのNetVigilなどのサードパーティの監視製品を使用できます。モニターを有効にして、負荷テストスクリプトを使用してデータベースサーバーに対してトラフィックを生成します。収集されたデータを調べて、負荷がかかっているときにクエリがどのように実行されたかを確認します。この情報により、さらにクエリを微調整できる場合があります。

混合ワークロードの本番環境をかなり厳密に模倣するのに十分なサーバーリソースがある場合は、OpenSTAなどの負荷テストツールを使用してクエリチューニングの第3ラウンドを実行し、データベースモニタリングを実行して、クエリが他のアプリケーションと一緒にどのように実行されるかを確認できます。データベース。

データベースの状態が変化しても(ボリュームの増加、レコードの削除など)、テストと調整を続けます。多くの場合、努力する価値は十分にあります。

No. 3:ウイルス対策にかかる費用は?

重要なサーバーでのウイルス対策は、特にWindowsサーバーの基本的な要件です。ただし、その影響は痛みを伴う可能性があります。一部のウイルススキャナーは他のスキャナーよりも目立たず、サーバーのパフォーマンスを大幅に低下させる可能性があります。

ウイルススキャナーを実行しているかどうかにかかわらず、パフォーマンステストを実行して、影響を判断してください。スキャナーなしで著しい改善が見られた場合は、別のベンダーを探す時が来ました。特定の機能も確認してください。リアルタイムスキャンを無効にすると、パフォーマンスが向上することがよくあります。

ビジネスロジックがどれほど適切に記述されていても、中間層に展開する場合は、パフォーマンスを最大化するためにアプリケーションサーバーのランタイム環境を調整する必要があります。

音質を微調整するためのノブがたくさんあるビンテージステレオのように、BEA、IBM、Oracleなどのベンダーのアプリケーションサーバーは、目がくらむようなコントロールのセットを提供します。秘訣は、アプリケーションの属性に応じて、ノブを正しい方向に回すことです。

4位:中間層の最大化

ビジネスロジックがどれほど適切に記述されていても、中間層に展開する場合は、パフォーマンスを最大化するためにアプリケーションサーバーのランタイム環境を調整する必要があります。

音質を微調整するためのノブがたくさんあるビンテージステレオのように、BEA、IBM、Oracleなどのベンダーのアプリケーションサーバーは、目がくらむようなコントロールのセットを提供します。秘訣は、アプリケーションの属性に応じて、ノブを正しい方向に回すことです。

たとえば、アプリケーションがサーブレットを多用する場合は、サーブレットのキャッシュを有効にする必要があります。同様に、アプリケーションで多数のSQLステートメントを使用して大規模なユーザーベースをサポートする場合は、プリペアドステートメントのキャッシュを有効にし、目的のワークロードをサポートするのに十分な大きさになるようにキャッシュの最大サイズを設定する必要があります。

パフォーマンスチューニングが実際に役立つ主要な領域の1つは、データベース接続プールです。最小接続または最大接続の設定が低すぎると、確実にボトルネックが発生します。それらを高く設定しすぎると、より大きな接続プールを維持するために必要な追加のオーバーヘッドが原因で速度が低下する可能性があります。

目的のワークロードがわかっている場合は、ステージング・アプリケーション・サーバーでIBMのTivoli Performance Viewer for WebSphereなどのパフォーマンス監視ツールをオンにして、アプリケーション・サーバーのランタイムを調整してください。負荷生成ツールを使用して予想されるワークロードの量を生成し、監視結果を保存して再生し、調整が必要なノブを分析します。

本番環境では、ランタイムを監視するために、オーバーヘッドの少ないパッシブモニタリングをオンにすることをお勧めします。ワークロードが時間の経過とともに変化する場合は、新しいパフォーマンスレビューを実行する必要があります。

No. 5:ネットワーク接続を最適化する

現在、ほとんどのミッドレベルエンタープライズサーバーにはデュアルギガビットNICが搭載されていますが、ほとんどのサーバーは2番目のパイプを使用していません。さらに、ギガビットスイッチの価格は下落しました。ファイルサーバーへの120MBpsのリンクにより、多数の100メガビットクライアントがワイヤーレートのファイルアクセスを同時に実現できます。

ギガビットスイッチングがなくても、NICボンディングは重要です。最も単純な方法では、2つのNICを結合すると冗長性が得られますが、送信負荷分散が追加され、アウトバウンド帯域幅を効果的に2倍にすることができます。スイッチアシストチーミングを使用すると、インバウンドトラフィックに同じ効果が得られます。ほぼすべての主要なサーバーベンダーがNICチーミングドライバーを提供しています。サードパーティのユーティリティもあります。これは、大きくて安価な帯域幅のブーストです。

No. 6:Webサーバーを巻き上げる

Webサーバーを調整してパフォーマンスを最大化するためにできることは本当にたくさんありますか?実際、主に、予想される本番トラフィックに一致するようにいくつかの重要な設定を調整することによって、そこにあります。

すでに稼働中のWebサーバーの場合は、リアルタイムのWebサーバー統計を収集することから始めます(ほとんどの主要なWebサーバーにはその機能が組み込まれています)。次に、ステージングに移動して、調整が必要なパラメーターがある場合はそれを判別します。

ステージングサーバーでWebサーバーのパフォーマンス監視ツールをアクティブ化します。負荷テストを実行し、応答時間、送受信されたバイト数、要求と応答の数などの関連パラメーターを調べます。

トラフィックの量に応じて調整する必要のある主要なパラメータには、キャッシュ、スレッド、接続設定などがあります。

頻繁に使用されるコンテンツのキャッシュを有効にします。一部のWebサーバーでは、使用状況に基づいてファイルを動的にキャッシュできますが、他のWebサーバーでは、キャッシュする内容を指定する必要があります。最大キャッシュサイズが予想されるトラフィックに対して十分であることを確認してください。また、Webサーバーがキャッシュアクセラレーションをサポートしている場合は、それも有効にします。

スレッドと接続の設定については、予想されるワークロードに応じて最小値と最大値を設定します。接続の場合、接続ごとのリクエストの最大数と接続タイムアウト設定も定義する必要があります。これらの値のいずれかを小さすぎたり大きすぎたりしないでください。設定が遅くなる可能性があります。

No. 7:WANの悲惨さ

WAN帯域幅を再利用する必要があると思いますか?WAN帯域幅の使用率を抑えるために、トラフィックシェーピングアプライアンスまたはキャッシングエンジンにバンドルを簡単に費やすことができます。しかし、それがパイプでない場合はどうなりますか?

まず最初に:何かを購入する前に、どのトラフィックがWANを通過しているかをしっかりと把握してください。Ethereal、ntop、Network InstrumentのObserver、WildPacketのEtherPeek NXなどのネットワーク分析ツールを使用すると、実際にネットワーク上にあるものを新たに確認できます。

Active Directoryのレプリケーション時間が短すぎる場合があり、レプリケーション間隔を長く設定するだけで、平日は余裕ができます。リモートロケーションにいる一部のユーザーは、共有を間違ったサーバーにマッピングし、気付かずにWANを介して大きなファイルをプルしていますか?長い間無効にされていたIPXネットワークの痕跡はまだ浮かんでいますか?一部のWANの問題は、アプリケーションの設定ミスに要約されます。この場合、トラフィックは、ローカルにとどまる必要があるときにWANを介して転送されます。WANトラフィックパターンに関する定期的なレポートは、お金と頭痛の種を節約します。

8位:上手に遊ぼう

多くの場合、企業全体の複数の部門のアプリケーション、Webサービス、およびWebサイトがサーバーリソースをめぐって競合します。これらの各コンポーネントはそれ自体で適切に調整されている場合がありますが、同じ本番クラスターを使用している別の部門のアプリケーションでは、クエリの調整が不十分であるか、その他の問題が発生し、ユーザーや顧客に影響を与える可能性があります。

短期的には、システム管理者やパフォーマンスの問題を抱えている部門と協力して、ユーザーや顧客の解決策を得るだけです。長期的には、オブジェクトがデプロイされている本番クラスターを使用するすべての部門にコミュニティを作成します。チーム間で作業して、混合ワークロードの本番環境を真に代表するステージング環境に十分な資金があることを確認します。最終的には、ステージング環境での混合ワークロードのパフォーマンスを検証するために使用できる一連のベンチマークを開発する必要があります。

No. 9:キャッシング、シェーピング、制限、オーマイ!

WANが本当に小さすぎて、長距離のフレームリレーネットワークを購入できない場合は、トラフィックシェーピングとキャッシングがパイプの詰まりを取り除くのに役立ちます。

トラフィックシェーピング構成は、科学よりも芸術です。多くの場合、アプリの優先順位付けは技術的なものよりも政治的なものですが、知覚されるネットワークパフォーマンスに多大な影響を与える可能性があります。

キャッシングはまったく別の獣です。トラフィックシェーピングよりも必要な作業は少なくなりますが、影響は小さくなる可能性があります。キャッシングエンジンは、WANトラフィックを削減するために、一般的にアクセスされるデータのローカルコピーを保存して提供します。欠点は、動的コンテンツを実際にキャッシュできないため、電子メールで同じパフォーマンスの向上が得られないことです。

No. 10:予測パッチ

月曜日に職場に到着したのは、多数のデスクトップがハングしていること、または重要なアプリケーションのパフォーマンスが低下してクロールしていることを知るためだけです。調査した結果、週末に適用されたパッチが原因であると判断しました。

そのため、パッチのロールバックをサポートするツールが必要です。さらに良いことに、パッチ管理戦略の一部としてパッチテストを含めます。まず、デスクトップとサーバーで使用されているアプリケーションとテクノロジーの定期的なインベントリを作成する必要があります。MicrosoftのSMSなど、ほとんどのシステム管理ツールには、インベントリを自動的に取得する機能があります。

次に、アプリケーションとテクノロジーをステージング環境に複製します。オペレーティングシステムとインフラストラクチャソフトウェアにパッチテストツールが含まれていない場合は、FLEXnetAdminStudioやWisePackageStudioなどのサードパーティツールを入手してください。

または、最新のパッチを使用してプラットフォームまたはテクノロジーを機能的に実行するためのスクリプトを作成することもできます。新しいパッチが到着したとき、およびソフトウェアの変更が行われたときに、このシナリオを繰り返す(およびスクリプトを調整する)必要があります。