0

同時に処理できる非同期リクエストの数をテストするために、Web アプリケーションにリクエストを送信するサンプル コンソール アプリケーションを作成しました。

    static void Main(string[] args)
    {
        const string url = "http://localhost/cip/AsyncPage.aspx";

        ThreadStart del = delegate
        {
            Console.WriteLine("Starting request");
            WebRequest request = WebRequest.Create(url);
            request.GetResponse();
            Console.WriteLine("Response ready");
        };

        for (int i = 0; i < 50; i++)
        {
            new Thread(del).Start();
        }

        Console.ReadLine();
    }

AsyncPage.aspx は Async="true" ページであり、1 から 10 までループするタスクが含まれています。各反復は 1 秒間スリープし、応答のダミー データに書き込みます (したがって、1 つの要求に 10 秒かかります)。

応答が 10 のバッチで返されることに気付いたこと。つまり、10 秒後に 10 の応答を取得し、次の 10 秒後に次の 10 の応答を取得します。Fiddler で同様のテストを行ったところ、結果は同じでした - 10 個のリクエストがすべてを使用しているようです .... ASP.NET リソース?

どの ASP.NET 設定がこの動作の原因なのだろうか。

4

2 に答える 2

2

この場合、コンシューマー プラットフォームでのローカル負荷テストはオプションではありません。

リクエスト制限があるのは ASP.NET ではなく、IIS 自体であり、実行している Windows のバージョンによって異なります。基本的に、サーバー プラットフォームを使用していない限り、最大 10 に制限されています。

これを本当に負荷テストしたい場合は、実際のサーバーで実行することをお勧めします。仮想化して必要なものを取得できますが、仮想化されたサーバーから実際の結果を得ることはできません.

参照: http://technet.microsoft.com/en-us/library/cc268241.aspx

于 2012-12-22T19:41:41.783 に答える
0

Microsoft ソフトウェア用の Windows のワークステーション バージョンでの 10 接続というハード リミットは、1993/4 にさかのぼります。

一人の観点から、これが明らかに制限を駆り立てた理由です。その時点 (93/94) まで、企業における Windows NT の採用は、Microsoft SQL Server と Microsoft SNA Server という 2 つの要素によって推進されていました。これらのソリューションは両方とも、Microsoft 以外の環境 (Banyan | Novell | Generic IP) の Windows の Workstation バージョンでも問題なく動作しました。SQL Svr 4.21 および同様の日付の SNA Server リリース以降、Microsoft はサーバー コード ベースを変更し、Windows ワークステーション エディションで実行する場合に 10 接続のみを許可しました。驚くことではありませんが、NT Server の採用は、組織が更新前と同じレベルの機能を実現するために、既存のサーバーを支えるためにサーバー エディションを購入する必要があったため、天井を通り抜けました。

この制限は、Microsoft プラットフォームで実行されている Microsoft ソフトウェアにのみ適用されます。そのため、Apache for Windows または ORACLE for Windows を同じワークステーション バージョンの Windows に配置すると、接続数が 10 に制限されることはなくなります。あなたの技術的な生活にプラスの影響を与えている Redmond の決定に感謝するかもしれません。

于 2012-12-24T16:33:05.673 に答える