5

ProcessModel の MSDN のこのドキュメントによると、autoConfig=true は、このKB記事に従って次の属性を設定します。

maxWorkerThreads、maxIoThreads、minFreeThreads、minLocalRequestFreeThreads、maxConnection

この設定を確認するために、ASP .NET 3.5 のサンプル Web アプリケーションを用意し、page_load イベントに次のコードを含めます。

        int w, c;

        ThreadPool.GetMinThreads(out w, out c);

        // Write the numbers of minimum threads
        Response.Write("Min: " + string.Format("{0}, {1}", w, c));

        w=0;
        c = 0;

        ThreadPool.GetMaxThreads(out w, out c);

        Response.Write(" Max: " + string.Format("{0}, {1}", w, c));

        Response.Write(" Maxconnections: " + ServicePointManager.DefaultConnectionLimit);

        Configuration conf = ConfigurationManager.OpenMachineConfiguration();
        ConfigurationSectionGroup secGrp = conf.SectionGroups["system.web"];
        ConfigurationSection sec = secGrp.Sections["httpRuntime"];
        Response.Write(" httpruntime settings: " + sec.ElementInformation.Properties["minFreeThreads"].Value + ", " +
                                                    sec.ElementInformation.Properties["minLocalRequestFreeThreads"].Value);

        Response.Flush();

最初に autoConfig を false に設定してから true に設定してページを実行すると、次の出力が得られます。

autoConfig=false: 最小: 2、2 最大: 40、40 最大接続数: 10 httpruntime 設定: 8、4

autoConfig=true: 最小: 2、2 最大: 200、200 最大接続数: 24 httpruntime 設定: 8、4

autoConfig=false は期待どおりに機能し、デフォルト値が出力に表示されますが、true に設定した場合の出力には少し驚きました。

  1. maxWorkerThreads および maxIoThreads 属性が正しく設定されているため、出力は 200 (デュアル コア CPU では 100x2) になります。
  2. ただし、KB に従って minWorkerThreads 属性を設定していないようです: minWorkerThreads = maxWorkerThreads/2
  3. また、MSDN ドキュメントの設定 autoConfig=true によると、minFreeThreads および minLocalRequestFreeThreads 属性を KB で推奨されている値に設定しますが、そうではないようです。デフォルト値の 8 と 4 を取得します。

私は少し混乱しています。ここで何が起こっているかについてのアイデアはありますか? サンプルを間違えたのか、それとも何か?

4

1 に答える 1

0

私の推測では、あなたは以下の同じ種類のロジックを扱っていると思います:

WCF 4:WCFサービスのより高いデフォルトのスロットリング設定

WCF 4では、これらの設定のデフォルト値が改訂され、ほとんどの場合、デフォルトを変更する必要がなくなりました。主な変更点は次のとおりです。

・MaxConcurrentSessions:デフォルトは100 * ProcessorCount

・MaxConcurrentCalls:デフォルトは16 * ProcessorCount

・maxConcurrentInstances:デフォルトは、上記の2つの合計であり、以前と同じパターンに従います。

于 2011-08-25T02:49:26.277 に答える