4

Web ファームが必要な ASP.NET アプリケーションに問題がありますが、アプリケーションにログインするだけで約 15 秒かかります

アプリケーションの非 Web ファーム バージョンを作成し、代わりに INPROC セッション状態を使用して、ログイン時間が即時になるという小さな実験を行いました。このテスト インスタンスでは、同じマシンで SQL Express を実行しています。

SQLサーバーのセッション状態が遅いことは知っていますが、これほど遅くする方法はありません。問題を追跡する方法に関する提案はありますか?

これは私のセッション状態です:

<sessionState mode="SQLServer" timeout="60" sqlConnectionString="Data Source=localhost;Integrated Security=SSPI;" sqlCommandTimeout="30" cookieless="false" useHostingIdentity="False" regenerateExpiredSessionId="True" />

ユーザー名パスワードと統合セキュリティの両方を使用してみました。

4

3 に答える 3

0

リレーショナルデータベースはAtomic(ACID)であるため、全員が同じテーブル(ASPStateTempSessions)にアクセスすると、パフォーマンスが大幅に低下します。

代わりにSessionStateモードを使用した場合と同じ問題が発生し、ロードバランサーでASPNetStateServiceを開始して使用しました。はるかに優れたスループット。

<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="false" timeout="60" />
于 2013-03-14T15:32:17.187 に答える
0

あなたの質問は広範囲に及びます -

  1. コード: セッションに何をプッシュするかは非常に重要です。大きな BLOB などを保存している場合、セッション データが保存され、データベースから読み取られるたびに、シリアル化/逆シリアル化が発生します。保存されているデータを解析して、平均サイズを調べていただけますか? 何千人ものユーザーが接続されている SQL Server に 1 MB から 2 MB のデータを格納するビジネス アプリケーションを見てきましたが、基盤となるハードウェアはスループットをサポートするのに十分な能力がありました。
  2. インフラストラクチャ: マシンに搭載されている RAM の量は? aspstate データベースで sql trace を実行して、入ってくる接続の数と、クエリの実行にかかる時間を確認できますか? 問題はデータベース側にあるのではなく、セッション情報を保存するときにアプリケーションが何かをしようとしている可能性があります。

SQL Server セッション ストレージはそれほど遅くはありません。私のマシンでは 8 ギガ RAM と asp.net アプリケーションが Visual Studio (IIS Express) を介して実行されており、接続してアプリケーションを起動するのにわずか 1 秒しかかかりません。

于 2017-04-04T13:20:26.540 に答える