質問

.NET Web アプリケーションのストレス テストを行っています。私がこれを行った理由は 2 つあります。実際の状況下でパフォーマンスがどのようなものであるかを確認したかったし、テスト中に問題を見逃していないことを確認したかったのです。アプリケーションには 30 人の同時ユーザーがおり、通常の業務中と同じようにアプリケーションを使用していました。ほとんどのユーザーはアプリケーションの複数のウィンドウを開いていました。

  • 10 ユーザー:悪くない
  • 20 ユーザー:減速
  • 30 ユーザー:非常に遅いですが、タイムアウトはありません

本番サーバーにロードされました。これは、2.66G Hz Xeon プロセッサと 2 GB の RAM を搭載した仮想サーバーです。Win2K3 SP2を使用しています。.NET 1.1 および 2.0 がロードされており、SQLExpress SP1 を使用しています。

あとがきですべてのテーブルのインデックスを再確認しましたが、すべて本来あるべきものでした。

アプリケーションのパフォーマンスを向上するにはどうすればよいでしょうか?

役に立ちましたか?

解決

これは私が思いついただけですが、ユーザーが 20 名を超える場合に SQL Server が使用しているメモリの量を確認してください。Express バージョンの制限の 1 つは、 RAM は 1GB に制限されています. 。したがって、Express の制限により、サーバーで使用できる十分なメモリが不足しているという単純な問題である可能性があります。

他のヒント

  1. アプリケーションの実行方法によっては、同時実行の問題が発生する可能性があります。「nolock」キーワードを使用して読み取りを実行してみてください。

  2. 列のテーブル エイリアスを追加してみてください (SELECT * の使用は避けてください)。これは、列がどのテーブルから来たのかを「推測」する必要がないため、MSSQL に役立ちます。

  3. まだ移行していない場合は、SPROC に移行してください。これにより、MSSQL は特定のクエリの通常の結果セットに対してデータのインデックスをより適切に作成できるようになります。

  4. SPROCS の実行計画に従って、想定されるインデックスが使用されていることを確認してください。

  5. データベースに対してトレースを実行して、受信リクエストがどのようなものかを確認します。特定の SPROC が何度も実行されていることに気づくかもしれません。一般に、可能であればクライアント上で応答をキャッシュすることは良い兆候です。(ルックアップリストなど)

アップデート:以前のバージョンのアプリケーションで同じ製品を使用していたため、SQL Server Express は問題ではないようです。次のステップはボトルネックを特定することだと思います。データベース層にあることが確実な場合は、プロファイラー トレースを取得して、最も負荷の高いクエリの実行時間を短縮することをお勧めします。

これは、SQL Server 動的管理ビュー (DMV) および関連する動的管理機能 (DMF) から統計を収集するために使用するもう 1 つのリンクです。Express エディションで使用できるかどうかはわかりません。隠されたデータを明らかにしてアプリケーションのパフォーマンスを最適化する.


Web アプリに SQL Server Express を使用していますか?私の知る限り、実稼働デプロイメントにはいくつかの制限があります。

SQLサーバーエクスプレス 無料であり、ISV によって再配布できます (同意の対象となります)。 SQL Server Express は デスクトップおよび小規模サーバー アプリケーションの学習と構築に最適. 。このエディションは、独立系ソフトウェア ベンダー、プロ以外の開発者、クライアント アプリケーションを構築する趣味人にとって最適な選択肢です。より高度なデータベース機能が必要な場合は、SQL Server Express をより高度なバージョンの SQL Server にシームレスにアップグレードできます。

仮想サーバーのディスクパフォ​​ーマンスを確認してみます。それが問題の 1 つである場合は、データベースを別のスピンドルに配置することをお勧めします。

アップデート:Gulzar が適切に示唆しているように、別のスピンドルに移動するか、SQL Server のバージョンをアップグレードします。

データを取得した後は必ず接続を閉じてください。

SQL プロファイラーを実行して、データベースに送信されたクエリを確認します。次のようなクエリを探します。

  • 返すデータが多すぎる
  • 施工が不十分
  • 何度も実行されすぎている
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top