一个w3wp.exe发生访问不可读内存(内存不能为read)错误的例子

       朋友单位的一套很老的WEB应用,有多老呢?后端使用server2003的IIS、foxpro数据库、ASP语言。业务人员在本地更新数据库后使用FTP上传覆盖,以完成更新。这样清茶淡饭的日子过了十几年了也平平稳稳的。

       突然有一天,客户端访问出现services unavaliable。查看服务器端出现上述错误弹窗。点击确定后web恢复正常。但过一段时间又会出现。

       网络查询,找到的可能方法有病毒木马查杀、Dll文件重新注册。尝试后问题未解决。于是决定从代码下手。

       先是在IIS中,用对半查找法,把WEB应用分配到不同的应用程序池中,这样几轮后就能定位到导致故障的WEB应用

       然后对代码文件和数据备份后,对代码进行逐功能块注释掉的方法进行排查。最后发现在执行一conn.execute(sql)进行数据查询时,错误弹窗出现。询问IT人员得知近期一直未更新代码,询业务人员得知近几天上传更新过dbf数据库文件。经对比业务人员的操作刚好和故障出现时间一致。由此确定是新上传的数据库文件有问题,导致ADO在执行查询时出现严重错误。

       遂联系业务人员重新上传最近一次正常的dbf文件,WEB应用正常。

       回头来看,这事情挺奇葩的。通常IT人员绝对不会怀疑数据库文件的错误会导致WEB应用服务程序出错,而会把目光放在代码、环境等地方。

       我建议朋友找机会还是把老旧的东西淘汰掉吧,ASP极弱的开发能力、排除能力,DBF太脆弱,对IT人员是个折磨。

       但是朋友说,业务人员不这样认为,她们说用的很顺手啊。想想也对,合适的就是最好的,升级不一定划算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值