时不待我 天道酬勤

没有多少时间可以虚度了....

导航


前几天接到上级领导的安排,让我去帮忙看看中航油数据库CPU高负荷的情况。在那边和同事黄老分析了索引碎片和表的健壮性等常规问题。没发现可能造成这回高负荷的原因,拿了SQL Server Profiler回来分析后,发现了如下图的情况:

 

频繁的AuditLogout事件造成了CPU时间的大量占用。当有数据库连接建立时,会触发Audit login 事件;而当有某个数据库连接关闭时,将触发Audit logout 事件。为什么会频繁发生AuditLogout事件,当时还没有分析出来。先采用临时方案解决这个问题,就是加大连接池的数量,加长连接池的时间。在ASP.NET Web.config里面的数据库连接字符串中定义如下语句

Enlist=true;Pooling=true;Max Pool Size=500;Min Pool Size=1;Connection Lifetime=300;packet size=30000;Connect Timeout=20

在部署上线后,数据库服务器的CPU消耗从90%下降到了60%。暂时解决了数据库的性能问题。