25

(System.Data.Entities)EF を使用して SQL DB から読み取るWCF サービスでプロファイリングを行っています。サービスにヒットする複数の並列クライアントをスピンアップすると、CPU はすべて 100% になり、パフォーマンスは一般的に低下し、すべてが停滞します。

これを同時実行プロファイラーでプロファイリングすると、時間の 85% が同期に費やされ、実際のコード実行は約 4% にすぎないことがわかりました。スタック トレースを詳しく調べると、ほとんどの同期はWaitForSingleObjectinへの呼び出しによるものと思われますSystem.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync。スタックは、呼び出しがネイティブ メソッド ラッパーに送られ、 で終了することを示していますkernel32.dll!_WaitForSingleObject

誰もこれを経験したことがありますか?これについて何かする方法はありますか?私は実際にこれにばかげた負荷をかけているわけではなく、約 20 の並列クライアントしかなく、すべて読み取り専用であるため、スレッドがわざわざ同期することさえあることに驚いています。

私はこれと1週間戦ってきましたが、説明することはできません. どんな助けでも大歓迎です!

4

1 に答える 1