关于Server 2016 IIS应用程序池崩溃的问题

有一个小ASP程序,调用Access数据库,迁移到Server 2016/IIS10中。

为了访问数据库,安装了Access Database Engine 2016组件。

后期使用中发现,程序在查询数据库时没问题,写入数据库时会随机发生应用程序池崩溃的故障。(但是数据确实已经写进数据库里了)

受IIS的故障恢复策略影响,崩溃的应用程序池会自动重启,但用户这边由于丢失了session,浏览器会提示重新登录。

检查服务器上的事件,发现有如下记录:

错误应用程序名称: w3wp.exe,版本: 10.0.14393.0,时间戳: 0x57899b8a
错误模块名称: KERNELBASE.dll,版本: 10.0.14393.2457,时间戳: 0x5b7e2adb
异常代码: 0xe06d7363
错误偏移量: 0x0000000000033c58
错误进程 ID: 0x2098
错误应用程序启动时间: 0x01d449d2261e982f
错误应用程序路径: c:\windows\system32\inetsrv\w3wp.exe
错误模块路径: C:\Windows\System32\KERNELBASE.dll
报告 ID: cb112c13-544c-4d28-bdbb-f0b1507c8b0a
错误程序包全名:
错误程序包相对应用程序 ID:

按照这个信息上网查询,得到的都是一些不相干的结果。有说是目录没有写入权限的,其实不然,因为崩溃之后再看,发现数据已经写入库中了。

先是把w3wp.exe崩溃时的dump文件拿回来分析,windbg最后提示到是一个office相关的dll上出了异常。

根据之前的使用体验,最后问题就怀疑到了Access Database Engine身上。

于是科学上网,按照错误代码0xe06d7363进行查询,得到的结果仍然非常少,但发现一个有用的:

《IIS crash with Access Database Engine 2016 Redistributable》

这个Po主说自己也是从其他系统迁移到2016的,Access Database Engine也装了2016版本,结果就出现了同样的故障。据他测试,如果Database Engine使用2010版本,则没有问题。

下面有回复说也遇到了同样的故障,但是卸载了ADE改装Access Runtime 2016也可以解决。

我先尝试在服务器上卸载ADE,然后安装runtime 2016,发现问题更严重了,无论是web还是gui都无法打开数据库……

最后卸载,安装了ADE 2010 X64版本,结果待观察。

补充:CSDN的评论显示越来越不友好了,很难注意到评论内容,只好编辑文章来补充。

更换为ADE 2010 X64版本后,问题解决,没有再出现过错误。

发布了291 篇原创文章 · 获赞 34 · 访问量 83万+

猜你喜欢

转载自blog.csdn.net/robur/article/details/82660017