关于访问数据库异常:Timeout expired问题

myview 2008-09-26 04:48:40
MS SQL 2005+ASP.NET 2.0

目前这个平台已经稳定运行了2年多,从来没有出现过这样的错误.
最近因为机房扩充(原来只在电信放了服务器),现在在网通加了站点服务器(网通的站点程序是通过TCP/IP连接外网远程的数据库:Data Source=122.23.45.123,36782;Network Library=DBMSSOCN;Initial Catalog=Test;User ID=TestDBUser;Password=pwd324uyr 连接是没有任何问题),最近发现站点频繁报告这个异常.具体错误信息如下)
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
StackTrace: at FotoEver.SystemLibrary.ExceptionHandler.ThrowException(SystemLayer layer, Exception ex) in D:\WorkDir\VSS3\NewFEWebSiteDev\SystemLibrary\ExceptionHandler.cs:line 16
at FotoEver.DatabaseLibrary.DBHandler.ThrowException(Exception ex) in D:\WorkDir\VSS3\NewFEWebSiteDev\DBClient\DBHandler.cs:line 633
at FotoEver.DatabaseLibrary.DBHandler._ExecuteNonQuery() in D:\WorkDir\VSS3\NewFEWebSiteDev\DBClient\DBHandler.cs:line 131
at FotoEver.DatabaseLibrary.DBHandler.ExecuteNonQuery(String commandText, CommandType commandType, Hashtable parameterList) in D:\WorkDir\VSS3\NewFEWebSiteDev\DBClient\DBHandler.cs:line 119
at FotoEver.NewsLibrary.ArticleMgr.VisitCountPlusOne(Int32 ID) in D:\WorkDir\VSS3\NewFEWebSiteDev\NewsLibrary\ArticleMgr.cs:line 181
at FotoEver.UI.Fashion.EntRead.GetAritcleInfo()
at FotoEver.UI.Fashion.EntRead.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at FotoEver.BaseLibrary.PageBase.OnLoad(EventArgs e) in D:\WorkDir\VSS3\NewFEWebSiteDev\BaseLibrary\PageBase.cs:line 39
at FotoEver.BaseLibrary.PageBaseN.OnLoad(EventArgs e) in D:\WorkDir\VSS3\NewFEWebSiteDev\BaseLibrary\PageBaseN.cs:line 37
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Client Info:REMOTE_USER:; REMOTE_ADDR:116.19.79.134

我也使用SQL性能分析器跟踪了一段时间,结果发现Audit Logout事件狂多,并且Reads很大(I/0很大),但是cpu时间很正常,整个数据库服务器的内存和cpu都很正常,cpu维持在8%以下运行.但是就是不停的报告该异常,我也尝试着把Command.CommandTimeout = 60;sp_who2察看以后,发现Connection Pool也并没有到达最大连接,设置更大了一点,但是没有用.
很奇怪的是,当发生该异常的时候数据库就一个table好像被锁死了一样,查询该表就是一直处于等待状态,其他表查询都很快.大约3~4分钟后就自动好了.
所以很奇怪,网通没有加进来的时候,2年多从来没有发生过该异常,我开始怀疑是不是因为网通用tcp/ip连接数据库时,因为网络问题,导致连接不稳定造成数据库I/O被堵塞.

我发现,该异常90%发生在对该table进行查询的时候.

希望大家帮我想想办法,分数不是问题.
谢谢.
...全文
286 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
myview 2008-09-27
  • 打赏
  • 举报
回复
别沉下去啊
myview 2008-09-26
  • 打赏
  • 举报
回复
人呢?
dddd218 2008-09-26
  • 打赏
  • 举报
回复
限你在一小时内更改数据库链接字符串,否则你的服务器必将崩溃
myview 2008-09-26
  • 打赏
  • 举报
回复
连接字符串是假的,我改过了,谢谢你的提醒,这个低级错误我可不会犯.
cloudgamer 2008-09-26
  • 打赏
  • 举报
回复
这个放到sql区或许更好
海洋齐齐 2008-09-26
  • 打赏
  • 举报
回复
up
楼主你把连接字符串放出来不太安全的说

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧