Я смотрю на проблемы производительности большой системы C # / .NET 3.5, которая демонстрирует снижение производительности, поскольку число пользователей, делающих запросы, масштабируется до 40-50 различных пользовательских запросов в секунду.
Длительность запроса значительно увеличивается, в то время как загрузка ЦП и В / В, похоже, остается примерно одинаковой. Это заставляет меня думать, что у нас могут быть проблемы с тем, как общие объекты в нашей системе, которые защищены с помощью операторов c # lock() {...}
, могут влиять на производительность одновременного доступа. В частности, я подозреваю, что некоторая степень блокировки блокировок происходит на часто используемых общих данных, которые защищены критическими разделами (потому что они предназначены для чтения / записи).
Есть ли у кого-нибудь предложения о том, как на самом деле диагностировать, является ли проблема с блокировкой? .. или если конкуренция за блокировку любого рода способствует длительному времени запроса?