调试和诊断.NET中的锁定转发问题发出请求的用户数量可以扩展到每秒40-50个不同的用户请求。请求持续时间显着增加,而CPU和I/O负载似乎保持不变。这让我相信我们的系统中可能存在问题,即使用c#lock(){...}语句保护的共享对象如何影响并发访问性能。具体来说,我怀疑某些级别的锁定会话(因为它是读/写的)发生在受关键部分保护的公共共享数据上。有没有人建议如何实际诊断锁恢复是否是问题……或者是否有任何类型的锁争用导致请求时间长?锁定车队通常很难调试。您的代码路径是否直接或在分支中有顺序锁定语句?TotalofContentions性能计数器给出应用程序中争用的基本估计。也打开一个探查器看看。您还可以编写一些性能计数器来跟踪代码路径中速度较慢的部分。还要确保仅在绝对必要时才保持锁定状态。另请参阅Windows性能工具。我发现这些非常有用,因为您可以追踪许多低级问题,例如异常的上下文切换量。一个好的起点是查看Lock和Thread性能计数器。有趣的是,您在Web应用程序中锁定了什么?锁定大多数ASP.NET应用程序并不常见。我无法深入了解诊断,但如果您找到支持您的假设的证据,您可能会对System.Threading.ReaderWriterLockSlim感兴趣,它允许并发读取但阻止并发写入。以上就是《C#学习教程:调试诊断.NET锁定转发问题》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
