朋友单位的一套很老的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人员是个折磨。
但是朋友说,业务人员不这样认为,她们说用的很顺手啊。想想也对,合适的就是最好的,升级不一定划算。