SNIReadSyncOverAsync и WaitForSingleObject блокируют производительность EF?

Я делаю некоторые профили на сервис WCF, который использует EF (System.Data.Entities) для чтения из базы данных SQL. Когда я запускаю несколько параллельных клиентов, которые попадают в сервис, все процессоры достигают 100%, производительность, как правило, снижается, и все падает.

При профилировании этого с помощью профилировщика параллелизма я обнаружил, что 85% времени тратится на синхронизацию, и только около 4% является фактическим выполнением кода. Если заглянуть глубже в трассировку стека, большая часть синхронизации, по-видимому, происходит из вызова WaitForSingleObject в System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync. Стек показывает, что вызов идет в оболочку встроенного метода, а затем завершается в kernel32.dll! _WaitForSingleObject.

Кто-нибудь испытывал это раньше? Есть ли способ что-то с этим сделать? Я'Я на самом деле не беру на себя абсурдную нагрузку, только около 20 параллельных клиентов, и этовсе только для чтения, поэтому яЯ удивлен тем, что потоки даже потрудятся синхронизировать.

я боролся с этим уже неделю, и я просто могуне могу это объяснить. Любая помощь будет оценена!

Ответы на вопрос(1)

Ваш ответ на вопрос