分享asp.net 网站部署一段时候后无法响应经验

11 篇文章 0 订阅

站点的后台服务端全部用的是自定义的httpHandler实现的,前端通过ajax调用。.net版本是4.0。发布到正式环境(win server 2003,IIS 6.0)后,一切正常,但是过一段时间后所有自定义的httpHandler都无法访问,提示404错误,静态资源却可以正常访问。因为老板近期要给客户演示这个系统,需要紧急处理。

排查过程:

1、因为用了自定义httpModule来捕获404错误,怀疑是这块代码有问题。仔细看了下就拿几行代码,没有出错的点,何况开始没问题,一段时候出的问题。所以否决了该出错点。

2、使用log4net组件捕获相关httpHandler的关键代码,没有捕获到异常。

3、查看系统事件,发现iis报 报错了,报错如下:

然后开始网上搜索该问题的相关解决方案,该问题的原因就是同一个应用程序池中的站点使用了不同的asp.net版本,导致iis崩溃。

我的站点用的是默认的应用程序池:defaultAppPool,asp.net版本是4.0,然后逐一排查其他使用defaultAppPool的站点.net版本,发现有两个站点是2.0的。

此刻心里终于有点底了,可能就是这个原因导致我的站点不能正常访问。后续把.net 2.0改成了4.0的,又单独新建了一个应用程序池供自己的站点使用。观察下来目前没有再出现请求httpHandler报404的错误了。

为了更彻底的定位问题,我应该依然使用defaultAppPool,而不是新建一个新的应用程序池。我后续会更新该篇文章为这个问题定个结论。

经过几天的跟踪,最后验证了上述定论的正确性。另外,硬件资源充足的情况下建议为每个站点分配一个单独的应用程序池,一旦该站点有问题手动回收应用程序池也不会影响到其他站点的正常运行。

如果想知道站点占用服务器内存情况,可以查看站点所在应用程序池进程所占cup和内存情况。怎么办呢?

1、任务管理器中->查看->选择列->勾选pid

2、运行->cmd命令->iisapp -a   这个命令执行后会弹出当前iis中所有应用程序池的pid进程号,根据pid就可以在任务管理器中查看内存占用情况了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值