我们公司用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 

解决方案 »

  1.   

    也有可能是补丁没打全,谁有2003 iss补丁大全 -.-
      

  2.   

    调回收进程,是不理志的,因为你调的低就意味着,很快就会调动一次回收。
    你知道的,.net回收一但起动,其它的进程全部选暂停,所以你会慢.你的加载就要等到它回收完才可以再用.
    如果这种情,很有可能,你的程序里面用了大量的没用对像垃圾,优化一下代码吧,所没有用的对像,也可以手动清掉,
    还有就是一些没有的进可能不要去用.一个页面内少用数据集等,把取出的信处,可以放在cookies session等里面,不要重复掉用数据库,以前做asp就有人在一个页面用过十个数据访问对像,很烂的方法.呵.优化才是硬道理.
      

  3.   

    死的时候 看下数据库的连接数,以及在处理的线程,以及处理的sql语句
    同时检查下,数据库资源的释放等,再不行,代码不改,换台机器,如果不死,那是 机器的问题,如果还死,照上面说的检查下
      

  4.   

    换过好几台机器,在pc上随便怎么测,甚至连上局域网多人测试都不死 在ibm服务器上就死了...
      

  5.   

    数据库连接池应该基本都关闭的  谢谢 zccmy22 stpangpang 请各位高手踊跃发言阿 -.-
      

  6.   

    死机的时候,数据库的日志 有什么异常信息啊?
    比如服务器上 数据库的io,以及cpu的占用 ? 是不是有异常啊?如果排除了 代码中的错误的话
      

  7.   

    把数据库 移走,专门找一台 机器 做dbserver 看看是否会出现这样的问题 ?
    刚运行,切过去 工作量应该不是很大吧 :P
      

  8.   

    看看你是数据库链接池在IIS假死的时候是不是全部关闭了。如果全部关闭了,那肯定是有问题了。检查一下代码。
      

  9.   

    谢谢stpangpang  周一我用你的方法试试谢谢nonoliving  数据库连接池在哪里配置和查看?
      

  10.   

    要不,你装个.net框架2.0试一下
      

  11.   

    看了下sql的连接池 发现一共有12个并发的这个数据库的进程,打开进程可以看到sql语句,而且每次iss回收以后,这些进程中的SQL语句都会清空,难道是因为写程序的时候sql没有关闭的原因吗?请各位高手指点看了一个以前做的别的项目,sql的连接池里好像没有那么多的并发进程的...最多1-2个.net2.0装过,没用,可以排除这个原因
      

  12.   

    等待中,我的也是这个问题,一个用户访问时候就不会有这样的问题,而且一般出现在刚开机的那会,数据库中的值都改变了,但是DataReader dr = .....;
    while(dr->Read())
    {
       ........
    }这样的时候dr->Read()为空,直接说没有,要不就提示说数据库服务器异常
      

  13.   

    在pc机器(win2003 sp2+sql)上很多人随便怎么测试都很正常 
    但放到ibm345服务器上(win2003sp1 +sql ),问题就来了 你的sp版本不一样啊,是不是这个的问题?
      

  14.   

    前面看了下程序,每调用一个页面 要同时执行10几条sql命令做判断权限,查询等,一般调一次页面会增加10-20个数据库连接,最高时,数据库中有50-70个并发连接如果是数据库资源的释放问题,应该怎么优化呢 
      

  15.   

    "每调用一个页面 要同时执行10几条sql命令做判断权限,查询等"    这个我觉得有点夸张,用户的权限一般都是定值,不需要每调一个页面都 查这个权限,登陆的时候,保存下来就可以了,在打开页面的时候,判断他的权限是是否符合这个页面的权限值就ok了,不需要每次都去数据库查。数据库资源的,一般的原则 是晚打开,早释放。坛子里有不少都贴出来他们的数据基类,楼主可以参考一下。
      

  16.   

    谢谢 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就死了连不上数据库