网站出问题方法总结

来源:互联网 发布:unity3d 模型加载 编辑:程序博客网 时间:2024/04/29 06:19


数据库问题
(数据库链接没关闭,数据库服务器cpu占用100%,查询数据库是否有死锁)。数据库查询时间太长了

本地访问是否有问题

查看系统日志和iis日志

1.某些上传目录是否不容许写入,导致卡死?
1、查看iis日志,看是否有可用的地方
2、访问人数过多,超过服务器负荷?怎么解决

1.改大上传数
<system.web>
< httpRuntime maxRequestLength = "40960" useFullyQualifiedRedirectUrl="true"/>
< /system.web>


3. 工作进程数,请求队列数,网站属性页-性能 网站连数数不要设得太小设置高一点
应用池右键属性-性能 核心请求队列限制为:10000



1.程序问题。
换程序,还原的网站是不是旧的,能否查看具体报错信息,拿一台机器,现场调试?

2.数据库问题
(数据库链接没关闭,数据库服务器cpu占用100%,查询数据库是否有死锁)。数据库查询时间太长了

3.网络问题
 如果断了网,链接还是这个问题就是程序的问题了,和访问量没关系
 换网段。 压力测试?

4.病毒 检查页面是否被修改

5.代码

其他配置修改:
1.改大上传数
<system.web>
< httpRuntime maxRequestLength = "40960" useFullyQualifiedRedirectUrl="true"/>
< /system.web>
2.如果是1.1的话appRequestQueueLimit 改大点 1000
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG下,先备份machine.config再修改,
修改对应站点归属应用程序池的“请求队列限制” ,这个的默认值是4000,  改为10000
maxWorkerThreads="20"  改为 "40"
maxIoThreads="20"  改为 "40"
appRequestQueueLimit="100"  改为 "400"
有可能连接数超了。修改一下IIS数据库文件。
%windir%\system32\inetsrv\MetaBase.xml
修改AspRequestQueueMax值,服务器配置高的话,可以加多多的。

3. 工作进程数,请求队列数,网站属性页-性能 网站连数数不要设得太小设置高一点
应用池右键属性-性能 核心请求队列限制为:10000

4.还原的网站是不是旧的

5.观察程序池是否溢出,满了?


死锁的存储过程
CREATE procedure sp_who_lock  
as    
begin    
   declare @spid int    
   declare @blk int    

   declare @count int    

   declare @index int    

   declare @lock tinyint     

   set @lock=0     

   create table #temp_who_lock     

 (     

  id int identity(1,1),     

  spid int,     

  blk int    

 )     

 if @@error<>0 return @@error     

 insert into #temp_who_lock(spid,blk)     

 select 0 ,blocked      

 from (select * from master..sysprocesses where blocked>0)a     

 where not exists(select * from  master..sysprocesses where a.blocked =spid and blocked>0) 

   

 union select spid,blocked from  master..sysprocesses where blocked>0     

 if @@error<>0 return @@error     

 select @count=count(*),@index=1 from #temp_who_lock     

 if @@error<>0 return @@error     

 if @count=0     

 begin    

  select '没有阻塞和死锁信息'    

  return 0     

 end    

 while @index<=@count     

 begin    

  if exists(select 1 from #temp_who_lock a where id>@index and exists(select 1 from

#temp_who_lock where id<=@index and a.blk=spid))     

  begin    

   set @lock=1     

   select @spid=spid,@blk=blk from #temp_who_lock where id=@index    

   select '引起数据库死锁的是: '+ CAST(@spid AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'

   

   select  @spid, @blk   

   dbcc inputbuffer(@spid)     

   dbcc inputbuffer(@blk)     

  end    

  set @index=@index+1     

 end    

 if @lock=0      

 begin    

  set @index=1     

  while @index<=@count     

  begin    

   select @spid=spid,@blk=blk from #temp_who_lock where id=@index    

   if @spid=0     

    select '引起阻塞的是:'+cast(@blk as varchar(10))+ '进程号,其执行的SQL语法如下'    

   else     

    select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@blk AS

VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'    

   dbcc inputbuffer(@spid)   

   dbcc inputbuffer(@blk)     

   set @index=@index+1     

  end    

 end    

 drop table #temp_who_lock     

 return 0     

end          

GO

exec sp_who_lock


0 0
原创粉丝点击