gpt4 book ai didi

c# - 在 .NET 中调试和诊断锁传送问题

转载 作者:太空狗 更新时间:2023-10-29 23:04:39 24 4
gpt4 key购买 nike

我正在调查大型 C#/.NET 3.5 系统的性能问题,该系统随着发出请求的用户数量增加到每秒 40-50 个不同的用户请求而表现出性能下降。

请求持续时间显着增加,而 CPU 和 I/O 负载似乎保持不变。这让我相信我们可能会遇到问题,因为我们系统中的共享对象是使用 c# lock() {...} 语句保护的,这可能会影响并发访问性能。具体来说,我怀疑受关键部分保护的频繁使用的共享数据(因为它是读/写的)发生了某种程度的锁传送。

有没有人对如何实际诊断锁传送是否是问题......或者任何类型的锁争用是否导致请求时间过长有建议?

最佳答案

Lock convoy 通常很难调试。您的代码路径是否直接或在分支中有顺序锁语句?

Total # of Contentions性能计数器给出应用程序中争用的基本估计。

同时打开一个分析器并查看。您还可以编写一些性能计数器来跟踪代码路径的缓慢部分。还要确保仅在绝对必要时才持有锁。

另请查看 Windows Performance Tools .我发现这些非常有用,因为您可以追踪许多低级问题,例如异常数量的上下文切换。

关于c# - 在 .NET 中调试和诊断锁传送问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com