1

できるだけ高速になるように Web サービスを最適化しようとしています。8 コアと 8Gb の RAM を搭載した Windows Server 2008 ボックスの IIS7.5 (.NET4) で実行されている machine.config に次のセクションがあります。

<system.web>
      <httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608" />
      <processModel autoConfig="true" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" />
</system.web>

<system.net>
      <connectionManagement>
            <add address="*" maxconnection="96"/>
      </connectionManagement>
</system.net>

5 秒待ってから戻る .asmx Web サービスがあります。次に、同じサーバー上の Web サイトから次の C# コードを実行します。

CmsDataService service = new CmsDataService();
System.Diagnostics.Stopwatch timer = new Stopwatch();
List<Thread> threads = new List<Thread>();

for (int i = 0; i < RequestCount; i++)
{
    threads.Add(new Thread(delegate()
        {
            service.sleepTest();
        }));
}

timer.Start();
foreach (var thread in threads)
{
    thread.Start();
}

while (threads.Any(t => t.IsAlive))
{
    // wait
}
timer.Stop();

Response.Clear();
Response.Write(timer.ElapsedMilliseconds);

次の結果が返されます。

   10 requests in parallel averages = 5027ms
   100 requests in parallel averages = 10016ms
   1000 requests in parallel averages = 55175ms

最初の結果は問題ないように見えますが、他の結果は非常に遅いようです。通常、SOAP はこれほど遅いのですか、それとも微調整できる構成設定が他にありますか?

4

0 に答える 0