首先我再次向大家道歉!请大家谅解!
昨天晚上我九点钟回来, 发现博客园又出现了老问题,访问速度很慢,几乎无法访问,经常出现“Server Application Unavailable ”错误,灵感之源反映晚上6点多钟就出现问题了。自从程序升级之后,这个问题一直困扰着博客园。以前也偶尔出现过这个问题,但升级之后,更频繁了。
昨天早上,我将程序从CSDN提供的服务器上迁移到原来的服务器,以便找出问题的真正原因。迁移后,昨天白天运行很正常。
出现问题时,服务器CPU一直处于100%。主要是SQL Server与asp.net 进程占用了CPU。我用SQL事件探查器进行跟踪,发现blog_GenericGetEntries_10与blog_GenericGetPagedEntries_10这两个存储过程执行时间很长,有时长达5、6秒,这是博客园的程序使用最频繁的存储过程,程序升级后,增加了对这两个存储过程的调用,首页与每个网站分类都会调用这两个存储过程。SQL事件探查器中,偶尔出现的audit logout,执行时间更长,要几十秒,有时甚至要几分钟。audit logout究竟是什么?是什么引起audit logout?audit logout与.Net SqlClient Data Provider有什么关系?在SQL事件探查器中,audit logout事件的ApplicationName是.Net SqlClient Data Provider。请高手指点。
我仔细分析了blog_GenericGetEntries_10与blog_GenericGetPagedEntries_10,blog_GenericGetPagedEntries_10是一个分页的存储过程,调用了blog_GenericGetEntryIDs_10。唯一怀疑有问题的地方就是在这两个存储过程(blog_GenericGetEntries_10、blog_GenericGetPagedEntries_10)中每个查询语句都用到了with(nolock)。不知.Text中什么要使用with(nolock)?我的猜测是有可能是with(nolock) 引起了SQL Server死锁。现在我已经去掉了查询语句中 的with(nolock) , 看看是否还会出现问题?
希望大家献计献策,分析一下这个问题的原因并提供一些解决方案。
我在网上找到的一些相关文章:
http://forums.aspfree.com/t22127/s.html
http://www.devmanclub.com/showpost.aspx?postid=2432#2432