不好意思,小弟新来,还不会散分,请主场的朋友们告之如何散分,问题解决后立刻散。
我负责的一个中等规模的项目,上线运营了大概1个多月左右,开始有访问量,大概同时在线达到几十人的时候网站就开始不稳定,具体表现为频繁出错:所有用到DataReader的地方都会出最基本错误:未将对象引用设置到对象的实例。而所有用到DataSet的地方都会出最基本错误之一:找不到表[0]
出现这种表现应该是没查到数据的原因,我检查过了,在查询分析器里面是可以查出数据的,同一个页面数据并没有更新,而有时候会出错有时候又不会出错,到了人流量稍微大一点的时候就开始频繁频繁频繁的出错,然后过几分钟就好了,再来过几个小时又开始出错,周而复始。在事件查看器里面也找不到IIS或者.net有什么系统上的错误。
经过检查,所有连接数据库的connection对象都close()并且dispose()了,DataReader和DataSet也是close()或者dispose(),应该不存在连接池泄露的问题。而且数据访问接口采用的是单件模式,也不存在重复生成数据层对象的问题。而性能监视器中ActiveConnectionPools始终为1,不上升也不下降,但是NumberOfReclaimedConnection一直在上升,到了70多的时候就开始出问题,过一会问题又没有了,然后继续上升,到了100多的时候又出问题。
哎,这个问题要是不解决,十一就得在公司过了哦。
------解决方案--------------------------------------------------------
我们以前遇到的类似问题的原因是死锁 不过看来你的不像~ 帮你顶了~ 十一快乐~
------解决方案--------------------------------------------------------
可能是把连接字符串都释放了,于是连接都为null值了,这要检查代码
------解决方案--------------------------------------------------------
connection、DataReader等不要用public static
------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
对着 帖子 点管理 然后给分
具体的WEB 我都没做过
只能帮顶
------解决方案--------------------------------------------------------
可能你没有考虑到查询出来的数据为NULL值的,在强制转换时出错,
加判断if(dr[ "name "]!=DBNUll.value)
------解决方案--------------------------------------------------------
你的单件模式,是对所有用户,还是针对每个用户
------解决方案--------------------------------------------------------
顶楼上的,估计是你在强制转换的时候出错了。数据库是Oracle吗?
如果一些日期类型与整形为NULL的话,就会出错,你要加个判断。
------解决方案--------------------------------------------------------
null和dbnull.value是不同的,你用空值调试就知了,
dbnull.value是不允许.tostring()的
------解决方案--------------------------------------------------------
来接分的
------解决方案--------------------------------------------------------
UP
------解决方案--------------------------------------------------------
static 相当于application
使用之前最好lock
------解决方案--------------------------------------------------------
学习。
------解决方案--------------------------------------------------------
把数据库连接池加大到300试试,未将对象引用设置到对象的实例的错误一般都是某个对象为null才出现的。
------解决方案--------------------------------------------------------
comm里面有什么?是不是数据库的连接对象也在里面,如果在的话那么就极有可能是连接并发问题,因为程序里所有的数据连接都是通过唯一的comm对象来进行的,换句话说实际上你的程序在同一秒内的并发数只允许 “1” 个连接。
把它改成每个用户的试试。
顺便问一句,你的那几个大项目是C/S的吧。
------解决方案--------------------------------------------------------
偶认为 还是 datareader 的问题``` 没关闭```
哪怕 整站 只要有一个``没关 也会影响的```
问题 绝对是在datareader 上`请 LZ 仔细检查啊`
网上朋友 有遇过!
------解决方案--------------------------------------------------------
有可能数据库服务器和应用服务器之间的链路不够畅通,人多的时候就有取不到的情况!
------解决方案--------------------------------------------------------
up
想不出还有什么原因了。!!!
帮顶!!!!!!!!
------解决方案--------------------------------------------------------
我这小学三年级的学生回答不了你这四年级的问题?不过,你要散分,有我一份!!!学习学习
------解决方案--------------------------------------------------------
我想可能存在两种可能性
1.datareader的未关闭,一个没闭,会导致所有用到datareader的地方全出错的
这个东西效率是好,但是我个人觉得
要一个要浏览的数据量不大,的情况下还是用DateTable,可以省下不少事
2.staitc 你没有说是用什么框架做项目的
用staitc一定要小心,比如,一个连接字符串,一般都喜欢使用STATIC
因为可以不用不停得去WEB.CONFIG取