2

サーバーが100リクエストを送信すると同時に次の問題に直面し、新しいクエリの採用を遅らせ始め、最初の100リクエストは1分間実行される機能をトリガーし、実行の終了を待ち、101リクエストを送信します文字列と、まだ並行して実行されているリクエストの数を出力するブラウザ関数からの短い呼び出し。

したがって、100 個のすべてのリクエストがストリームで動作し始めた後、101 関数は高速であり、100 個のスレッドが現在並行して実行されていることを示しています。

インターネットで多くの情報を見て、すべてがうまくいくように見えますが、まだ結果はありません

NF4.5を使用

クラス属性は、並列 C# コードで動作するように設定されています

[CallbackBehavior(UseSynchronizationContext = false)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = 2147483646)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceContract(SessionMode = SessionMode.NotAllowed)]

関数エミュレーション負荷 1 分間 C# コード

プライベート静的 int スレッド 11 = 0;

[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
public string loadConcurency()
{
    threads11++;
    var count = 0;
    while (count < 6000)
    {
        count++;
        Thread.Sleep(10);
    }
    threads11--;
    return "1";
}

関数テスト統計 C# コード

[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]

public string ReportTest()
{
    try
    {
        StringBuilder response = new StringBuilder().AppendLine("threads=" + threads11.ToString() + "; ");
        response.AppendLine();

        return response.ToString();
    }
    catch (Exception ex)
    {
        return ex.ToString() + (ex.InnerException == null ? "" : ex.InnerException.ToString());
    }
}

serviceThrottling が非常に高く設定されました

<behavior name="ServiceBehavior">
  <serviceMetadata httpGetEnabled="True" />
  <serviceDebug includeExceptionDetailInFaults="true" />
  <serviceThrottling maxConcurrentCalls="3000" maxConcurrentSessions="30000" maxConcurrentInstances="3000" />
</behavior>

そのような問題に遭遇し、何が問題なのかを促したり、少なくとも他にどこを掘るべきかアドバイスをしたりしてくれることを願っています

4

1 に答える 1