2

Web ファームでホストされている MVC2 + Linq2SQL + MS SQL SERVER 2008 で記述された Web アプリケーションがあります。ほとんどstackoverflow.comのように

4 つの IIS7 + 1 つの SQL SERVER 2008 を MS NLB で負荷分散しています。

静的コンテンツは、外部キャッシュ プロバイダーである Akamai によってキャッシュされ、リクエストの 86% が削減されます。

各 Web サーバーには 32 GB の RAM と 4 つのクアッド コア CPU があるため、フロントエンドには 64 個のコアがあります。

セッション状態をテーブルに保存します。

中程度のトラフィック (ページ ロード = 0.2 秒) では問題なく動作しますが、同社はテレビ広告を行っており、これらの広告の間、トラフィックは 20 ~ 30 秒以内に最大 20,000 人のユーザーにヒットします。

この瞬間、ページの速度が 8 ~ 10 秒に低下します。ただし、CPU とメモリの使用率は、どのマシンでも 40% に達しません。

データセンターの帯域幅が限界の半分に達していません。

遅いページは、1 ~ 2 個のテーブルのみから最大 10 レコードの単純な SELECT からデータを生成します。

明らかにどこかにボトルネックがあり、その場所を突き止めようとしています。

どこで問題を探すべきか、誰かにアドバイスがありますか?

4

2 に答える 2

1

しばらく前に問題を発見しましたが、ここに投稿する時間がありませんでした。インデックス、SQL の最適化、ディスク I/O の監視、コードの修正など、考えられるほぼすべてのことを試しました。上記のどれも私の問題を解決しませんでした。LAN 上の 2 台のワークステーションから Web ストレス テストを実行したところ、数秒でページ全体をフリーズさせることができました。テストを実行しているときに、奇妙なことに気づきました。テスト用に別のコントローラーを作成し、2 つのメソッドを配置しました。どちらも同じことをしています。データベースサーバーに同じデータを要求しています。

アクション A)

public ActionResult Index(){
var model = new SomeModel();
// Get data
....
return View(model);
}

アクション B)

public ActionResult Index() {
 var model = new SomeModel();
// Get data
....
return View("Index",model);
}

ページ読み込みの違い:

A) ~ 297 ミリ秒

B) ~ 39.47 秒

これは、同時実行性が高い場合にのみ発生します。それ以外の場合は問題ありません。MVC2 ライブラリのデフォルト ビューの検索が問題を引き起こしているようです。一度指定すると、すべてうまく機能します。

私は自分のブログでそれを説明しました:

http://arturito.net/2011/10/24/asp-net-mvc2-in-the-web-farm-slow-page-load-with-high-traffic-where-is-the-bottleneck/

コードプレックスのasp.netのIssue Trackerに投稿しましたが、まだ誰もコメント/応答していません。

http://aspnet.codeplex.com/workitem/9396

于 2011-11-10T08:29:10.443 に答える
0

パフォーマンスを少しでも向上させるには、 http: //blogs.msdn.com/b/ricom/archive/2007/06/22/dlinq-linq-to-sql-performance-partでRicoMarianiが言及している微調整を試してみてください。-1.aspx。具体的には、CompiledQueryを使用して、表示専用オブジェクトの変更追跡をオフにしてみてください。

于 2011-10-04T16:28:33.200 に答える