パフォーマンスのニーズ: ユーザーと管理者
ユーザーは、エクスペリエンスによってアプリケーションのパフォーマンスを判断します。
- アプリケーションは迅速に応答できますか?
- バックグラウンド操作の実行中に砂時計アイコンが表示されますか?
- アプリケーションはすぐに起動して閉じますか?
- エラーは理解しやすい方法で処理されますか?
要約すると、ユーザーはアプリケーションを迅速かつ予測可能にしたいと考えています。
これに対し、管理者は、ネットワーク リソースをどれだけ効率的に使用するかについて、アプリケーションのパフォーマンスを判断することがよくあります。 管理者は次の質問を行う場合があります。
- アプリケーションのオーバーヘッドが低く、ネットワークの効率的な使用が行われますか?
- 接続の最小数が使用されているため、サーバーはできるだけ多くのユーザーに一度にサービスを提供できますか?
- ヘルプデスクに常に電話していますか?
つまり、管理者はアプリケーションのスケーリングを望んでいます。
パフォーマンスのニーズに関するベスト プラクティス
Windows ソケット アプリケーションを開発する場合、これらのパフォーマンス要件は有用なルールに変換されます。
ネットワーク アプリケーションを迅速に初期化します。
ユーザー インターフェイスは、ネットワーク応答を待機する必要はありません。 一部のタスクは、ネットワークが使用可能になる前、またはネットワークなしで実行できます。 ネットワークが応答していない場合、アプリケーションを閉じるなどの簡単な操作のためにユーザー インターフェイスが必要になる場合があります。
ネットワークのシャットダウンを待つ必要はありません。
適切に書き込まれたクライアント/サーバー アプリケーションは、中止切断を適切に処理します。 シャットダウン時に中断できないファイルやフォルダーをサーバーと同期するなど、時間のかかる操作を開始しないでください。 ネットワークは一貫して応答性が高くないため、小規模な操作でも時間がかかる可能性があります。 進行状況の表示や推定完了時間など、ユーザーに肯定的なフィードバックを提供します。
応答性の高いユーザー インターフェイスを確保します。
アプリケーションの応答性は、不要なヘルプデスクの呼び出しを排除するのに役立ちます。 対話型応答の適切なガイドラインは 500 ミリ秒です。 ユーザーは、500 ミリ秒を超える一時停止をパフォーマンスの遅れとして認識します。 アプリケーションは、アプリケーションに対する信頼をユーザーに提供するのに十分な応答性を備える必要があります。
ネットワーク エラーを確認します。
すべてのネットワーク エラーが重大であるわけではありません。 たとえば、すべてのデータを受信または投稿したアプリケーションでは、接続を閉じるときにエラーが無視される可能性があります。 ネットワークまたはユーザーが使用可能であると想定しないでください。は、ユーザーの介入なしでエラーを処理するか、エラーが重要でない場合は無視します。
アプリケーションでは、独自の妥当なタイムアウトを定義する必要があります。
たとえば、Windows ソケット connect() 要求は、一部の条件下で 21 秒間ブロックされる場合があります。 アプリケーションでは、ユーザーに応じて独自のタイムアウトを導入する必要がある場合があります。
プロトコルのオーバーヘッドを最小限に抑えます。
ネットワーク帯域幅の確保は、アプリケーションによって発生するプロトコルのオーバーヘッドを最小限に抑えることに部分的に関するものです。 また、不要なネットワーク トラフィックを排除することも行います。 ヘッダーのオーバーヘッドが低いプロトコルを使用して、アプリケーション データを転送できます。 たとえば、少量の非クリティカルまたは反復可能なデータを送信する場合は、TCP ではなく UDP を使用して、接続の確立とメンテナンスに関連するオーバーヘッドを軽減します。 同じデータを複数の受信者に送信する必要がある場合は、マルチキャストを検討してください。 UDP アプリケーションはフロー制御されていないことに注意してください。使用可能な帯域幅を超えてプッシュすると、致命的なネットワーク障害が発生する可能性があります。 Netstat ユーティリティを -e オプションと -s オプションと共に使用して、さまざまなプロトコルの統計情報を表示できます。
システム リソースを節約します。
適切な制約が使用されていない場合は、システム リソースをすばやく使用できます。 たとえば、ソケットと TCP 接続ではリソースが消費されます。 アプリケーションの目的を果たす TCP 接続は、クライアントごとに複数使用しないでください。
トランザクション アプリケーションの場合、優れたユーザー エクスペリエンスと低いネットワーク使用率は、目標と競合しません。 ネットワークはボトルネックです。 ネットワークを集中的に使用するアプリケーションは待機時間が長く、適切に記述されたネットワーク アプリケーションは、ユーザー インターフェイスとネットワーク転送の両方で不要な待機時間を最小限に抑えるように設計されています。
関連トピック