LBu*_*kin 5 .net c# asp.net concurrency multithreading
我正在研究一个大型C#/ .NET 3.5系统的性能问题,它表现出性能下降,因为发出请求的用户数量每秒可扩展到40-50个不同的用户请求.
请求持续时间显着增加,而CPU和I/O负载似乎保持不变.这让我相信,我们的系统中使用c#lock() {...}语句保护的共享对象如何影响并发访问性能可能会遇到问题.具体来说,我怀疑在关键部分保护的常用共享数据上会发生某种程度的锁定会话(因为它是读/写).
有没有人有关于如何实际诊断是否存在锁定康复问题的建议?或者是否有任何类型的锁争用导致请求时间过长?
一般来说,锁队列很难调试。您的代码路径是否直接或在分支中具有顺序锁定语句?
争用总数性能计数器给出了应用程序中争用的基本估计。
还打开分析器并查看。您还可以编写一些性能计数器来跟踪代码路径中缓慢的部分。还要确保仅在绝对必要时才持有锁。
另请查看Windows 性能工具。我发现这些非常有用,因为您可以追踪许多低级问题,例如异常数量的上下文切换。
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |