我们在生产环境中遇到了一些性能问题。
我们发现,当活动会话数超过 25 时,CPU 使用率达到 100%,并且需要很长时间才能下降。
我们拥有的环境:
产品 Microsoft SQL Server 企业版 9.3(sp2)
CPU 2(至强 2.13)
内存7G
会话详细信息 1 的快照
活动会话 25
第 496 章
空闲会话 289
被阻止的交易29
会话详细信息 2 的快照
活动会话 59
活跃交易 885
第 267 章
被阻止的交易49
我想知道:
2CPU 是否可以处理25 个活动会话(500 个活动事务)。 PS:我们测试过,没有并发请求,一个事务,读/写5 个表,在应用程序级别大约需要1 秒。
阻塞的事务是否占用更多的CPU。 PS:阻塞的事务主要是因为2个表上的锁。
解决方案是什么:添加 CPU 或调整应用程序(java/hibernate)以缩短此事务并减少表中的块?
当一切都在爬行时,您可以选择对情况有一个很好的了解:
祝你调查问题好运:-)。
您的问题很可能是由以下原因引起的查询性能不佳
锁/阻塞来自糟糕的索引,因为所有时间都花费在端到端扫描表上。CPU在这里无关紧要。
作为快速修复,请使用本文中的信息检查缺失的索引:http : //blogs.msdn.com/b/bartd/archive/2007/07/19/are-you-using-sql-s-missing-索引-dmvs.aspx