我们在生产环境中遇到了一些性能问题。
我们发现,当活动会话超过25次时,CPU的使用率达到100%,下降需要很长时间。
产品Microsoft企业版9.3(sp2)
CPU 2(Xeon 2.13)
存储器7G
会话
快照
活跃的会议. 25
活动事务496
闲置会议289
被阻止的交易29
会话
快照
活跃的会议59
活动事务885
闲置会议267
被阻止的交易49
我想知道:
解决方案是什么:添加CPU?或者调优应用程序(java/hibernate)来缩短这个事务并减少表中的块?
发布于 2011-08-04 18:06:58
当每件事都在爬行的时候,你可以选择对情况有一个很好的了解:
祝你好运,调查这些问题:-)。
发布于 2011-08-02 08:48:27
发布于 2011-08-07 14:19:45
我同意GBN和Marian的观点。
要回答您关于处理25个请求的2-CPU的问题:我有一个2 CPU系统,它支持大约750个用户连接,并且每秒平均运行4K批处理请求。有几项对我来说很重要:设计、管理和调优。如果您从糟糕的应用程序和数据库设计开始,那么在加载时就会失败(请考虑缩放)。
较高的CPU可能表示内存压力。您提到只有7GB的内存可供Server使用。如果有性能不佳的索引(太多索引、不正确的索引或没有索引),那么这将导致系统为各种请求将更多的数据库分页到内存中,如果有适当的索引。我要提醒你,疯狂地创建索引,因为错误的索引也会伤害你,因为每个索引都有可能在行更新过程中要求更新(创建-更新-删除)。
此外,使用缺少的索引DMVs需要使用您所知道的应用程序和数据库,而不仅仅是实现每个推荐的索引。我会查看金伯利·特里普关于索引这里的博客条目。在索引部分之后,查看其他类别可能对您的情况有所帮助。
如果您的Java/Hibernate更新单个事务中的5个表通过多次往返数据库进行更新,那么您将面临争用(阻止CRUD请求)。如果应用程序不能及时返回数据库,问题就会恶化。在应用程序中,关联的活动事务可能阻止其他请求的处理,并导致请求超时。
将上述两个问题加在一起,您就会开始出现严重的性能问题。
在单个事务的上下文中减少数据库往返次数将是一件非常好的事情。也许存储过程会有所帮助。
其余的工作将需要工作,以使您的应用程序的规模。您也可以考虑内存,但这应该是在完成了设计和性能评审之后,并且作为立即添加内存而实现的所需更改将掩盖您的问题。
绝对遵循玛丽安概述的建议。
我想说的是,你发现自己是一个伟大的挑战,并祝你取得巨大的成功!
https://dba.stackexchange.com/questions/4307
复制相似问题