|
|
添加到我关注的
MS SQLSERVER 2000 每隔一段时间就不响应(硬盘灯亮)
高校收费软件,一台SQL2000服务器,联上20个终端收学费。问题是SQLSERVER2000,容易SQL服务出现突然定住了(停止响应客户端),客户端无法得到响应(没有出错信息,发出访问数据库信息时,鼠标出现沙漏状态),一到两分钟或更长时间后,又可返回信息。服务器是用的至强的CPU,1G的内存,SCSI硬盘,换了另一台配置稍低些的服务器也不行,出问题的概率反而更高了,目前碰到的问题在别的学校没有碰到过,他们用的普通的PC机,配置更低的机器,带30台终端也没问题。这个突然停止响应的问题有时5,6个小时也不出,有时很频繁的出现(工作几分钟就出现一次)。如果这时重新启动SQL服务,重启客户端软件,也可以正常工作,不过只要出现停止响应问题后,就没完没了。如果出不问题就可以工作大半天也不出。平时服务器CPU资源占用率为20-60%,没有超过60%的情况,一出现不响应的问题,CPU资源占用率基本就是零了。出现故障后,收费软件客户端停在那里等响应,客户
打上SQLSERVER SP4的补丁先.
你的情况我也曾体会过.你打开性能监视器,把采样间隔改为20秒.让它跑一段时间一两个小时.之后你看看(Disk Queue Length)这个指标有没有一定的规律.
我以前遇到的情况是每十几分钟就出现一个(Disk Queue Length)波峰(100)待续的时间有四十秒左右,很有规律.出现波峰时,会有比较多的进程被死锁.我找到的一个合理的解释是,SQL2000会做数据操作时会把新的日志记录写在内存中,当内存中写日志的地方满了之后,系统会把日志转写入硬盘.这是SQL 2000的一种运行机制(为的是更快的记录日志记录).
说回你的问题,你不止要看(Disk Queue Length)这个指标,还要多添加一些指标来看,结合几种指标来看,看看系统是否有瓶颈,瓶颈在什么地方.这样就可以对症下药了.
先去网上找个网络包监控软件监控一下是不是有什么病毒攻击你的1433端口(以前抓住过一台电脑拼命的给服务器发包,原来是病毒),在用sql server的事件探察器看看访问你数据库的sql语句,在出现故障时是哪些语句在执行,用sp_who或查sysprocesses表看看是否存在锁。
个人估计可能病毒和锁的可能性较大,但不知道更多的情况(出现故障时服务器有没有反应,可否在查询分析器或企业管理器中访问各种对象。。。。)不好做更多的估计