急!请教各位高手 .net+win2003服务器+IIS6假死,连不到数据库,解决了立即结贴,高分送,参与有分!!

sonicryu 2008-04-24 09:49:04
我们公司用vs2003 + vb.net 开发了一个bs的OA项目,里面有个较复杂的公文流转模块。

在pc机器(win2003 sp2+sql)上很多人随便怎么测试都很正常

但放到ibm345服务器上(win2003sp1 +sql ),问题就来了

当程序(单用户登陆后)在公文流转的模块里打开5个页面(插入 更新 查询),iss就假死,报错连不到数据库,(错误信息在

文章最下面)(这个项目里的其他新闻发布asp模块到很正常)

我们重装了.netframe work1.1,又装了iss假死补丁,问题依旧

后来经某人指点把ISS应用程序池的回收进程的时间和数目调低iss才能不死,但是速度奇慢

或把web园最大工作进程数开大,情况稍微好转(能打开9个页面,然后又连不上数据库了,但过几秒又正常了)


小弟才疏学浅,现在找不到问题在哪里

素闻csdn是各位前辈和达人出没的地方 -.-

各位大侠,请指点下问题在哪里,或者有什么好办法解决,或者遇到过类似情况,请多加指点,感激不尽!!

一旦解决,高分相送,人格担保,绝不食言。

-------------------------------------------

错误信息如下

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

Error! Fail to connect to database.Please try it again or cantact to database administrator.
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错

误的出处的详细信息。

异常详细信息: System.Exception: Error! Fail to connect to database.Please try it again or cantact

to database administrator.

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的

信息。

堆栈跟踪:


[Exception: Error! Fail to connect to database.Please try it again or cantact to database

administrator. ]
paishuiii.cdbconn.dbcon_Table(String StrCommand) in C:\Inetpub\wwwroot\paishui20070511最新

\paishui20070511最新\class\cdbcon.vb:36
paishuiii.document.BindGrid_file() in C:\Inetpub\wwwroot\paishui20070511最新\paishui20070511最新

\document.aspx.vb:385
paishuiii.document.Page_Load(Object sender, EventArgs e) in C:\Inetpub\wwwroot\paishui20070511最

新\paishui20070511最新\document.aspx.vb:251
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731






...全文
300 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
sonicryu 2008-05-21
  • 打赏
  • 举报
回复
谢谢 stpangpang 和 ccp5780199

继续深入其中挖掘后,发现了一个奇怪现象

在winxp和pc机上测试 把web园进程设置为1 sql里面的同一时间的连接数大概为75,无论怎么调用查询操作的询页面(进程数都维持在75不变)所以没假死

在ibm服务器上测试 把web园进程设置为1 sql里面的同一时间的连接数大概为75 然后没调用一次查询页面进程数会增加5-10 一般增加到100左右 iis就假死了。。。连不上数据库


把web园调高后,sql里面的同一时间的连接数大概为500-800左右,反复调用查询页面后sql连接数超过1500,
然后iss就死了。。。连不上数据库
ccp5780199 2008-05-04
  • 打赏
  • 举报
回复
补充一下
2个环境不一样
会不会是只打SP1的原因?
可以试下在别的地方 搭建同样的环境测试下程序 看是环境还是程序的问题
ccp5780199 2008-05-04
  • 打赏
  • 举报
回复
如果是数据资源的问题
那么首先 能用缓存的尽量用缓存
其次就像楼上所说的某些权限信息可以在登陆的时候就直接取下来了,没必要频繁的去数据取
stpangpang 2008-05-04
  • 打赏
  • 举报
回复
"每调用一个页面 要同时执行10几条sql命令做判断权限,查询等"

这个我觉得有点夸张,用户的权限一般都是定值,不需要每调一个页面都 查这个权限,登陆的时候,保存下来就可以了,在打开页面的时候,判断他的权限是是否符合这个页面的权限值就ok了,不需要每次都去数据库查。

数据库资源的,一般的原则 是晚打开,早释放。坛子里有不少都贴出来他们的数据基类,楼主可以参考一下。

sonicryu 2008-04-30
  • 打赏
  • 举报
回复
前面看了下程序,每调用一个页面 要同时执行10几条sql命令做判断权限,查询等,一般调一次页面会增加10-20个数据库连接,最高时,数据库中有50-70个并发连接

如果是数据库资源的释放问题,应该怎么优化呢
yunfeng007 2008-04-29
  • 打赏
  • 举报
回复
在pc机器(win2003 sp2+sql)上很多人随便怎么测试都很正常
但放到ibm345服务器上(win2003sp1 +sql ),问题就来了

你的sp版本不一样啊,是不是这个的问题?
Magicwords 2008-04-29
  • 打赏
  • 举报
回复
等待中,我的也是这个问题,一个用户访问时候就不会有这样的问题,而且一般出现在刚开机的那会,

数据库中的值都改变了,但是

DataReader dr = .....;
while(dr->Read())
{
........
}

这样的时候dr->Read()为空,直接说没有,要不就提示说数据库服务器异常
sonicryu 2008-04-29
  • 打赏
  • 举报
回复
看了下sql的连接池 发现一共有12个并发的这个数据库的进程,打开进程可以看到sql语句,

而且每次iss回收以后,这些进程中的SQL语句都会清空,难道是因为写程序的时候sql没有关闭的原因吗?

请各位高手指点

看了一个以前做的别的项目,sql的连接池里好像没有那么多的并发进程的...最多1-2个



.net2.0装过,没用,可以排除这个原因
_NET2004 2008-04-25
  • 打赏
  • 举报
回复
要不,你装个.net框架2.0试一下

德者 2008-04-25
  • 打赏
  • 举报
回复
是不是无限的递归造成的
sonicryu 2008-04-25
  • 打赏
  • 举报
回复
谢谢stpangpang 周一我用你的方法试试

谢谢nonoliving 数据库连接池在哪里配置和查看?
nonoliving 2008-04-24
  • 打赏
  • 举报
回复
看看你是数据库链接池在IIS假死的时候是不是全部关闭了。如果全部关闭了,那肯定是有问题了。检查一下代码。
wangwang008 2008-04-24
  • 打赏
  • 举报
回复
学习了。帮顶一下吧。
汉升软件 2008-04-24
  • 打赏
  • 举报
回复
學習....
stpangpang 2008-04-24
  • 打赏
  • 举报
回复
把数据库 移走,专门找一台 机器 做dbserver 看看是否会出现这样的问题 ?
刚运行,切过去 工作量应该不是很大吧 :P
stpangpang 2008-04-24
  • 打赏
  • 举报
回复
死机的时候,数据库的日志 有什么异常信息啊?
比如服务器上 数据库的io,以及cpu的占用 ? 是不是有异常啊?

如果排除了 代码中的错误的话
sonicryu 2008-04-24
  • 打赏
  • 举报
回复
数据库连接池应该基本都关闭的

谢谢 zccmy22 stpangpang

请各位高手踊跃发言阿 -.-
sonicryu 2008-04-24
  • 打赏
  • 举报
回复
换过好几台机器,在pc上随便怎么测,甚至连上局域网多人测试都不死 在ibm服务器上就死了...
stpangpang 2008-04-24
  • 打赏
  • 举报
回复
死的时候 看下数据库的连接数,以及在处理的线程,以及处理的sql语句
同时检查下,数据库资源的释放等,

再不行,代码不改,换台机器,如果不死,那是 机器的问题,如果还死,照上面说的检查下
zccmy22 2008-04-24
  • 打赏
  • 举报
回复
调回收进程,是不理志的,因为你调的低就意味着,很快就会调动一次回收。
你知道的,.net回收一但起动,其它的进程全部选暂停,所以你会慢.你的加载就要等到它回收完才可以再用.
如果这种情,很有可能,你的程序里面用了大量的没用对像垃圾,优化一下代码吧,所没有用的对像,也可以手动清掉,
还有就是一些没有的进可能不要去用.一个页面内少用数据集等,把取出的信处,可以放在cookies session等里面,不要重复掉用数据库,以前做asp就有人在一个页面用过十个数据访问对像,很烂的方法.呵.优化才是硬道理.
加载更多回复(4)

62,074

社区成员

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

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

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

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