ChinaPay.dll 64位系统导致应用程序池崩溃,异常代码: 0xc0000005

记录一个ChinaPay.dll模块导致应用程序池崩溃关闭的问题,其实半年前就曾遇到这个问题,当初只是简单的处理下,想以后重构这个功能,毕竟主要原因还是清楚的。但是人算不如天算,到现在都还没重构这个旧版本的ChinaPay支付功能模块。

ChinaPay.dll导致Application Pool崩溃截图

先说下具体情况,引发应用程序池(Application Pool)崩溃并停止的主要原因是一个旧版本的银联在线支付功能模块(ChinaPay)。这是一个用ASP写的模块,兼容性存在很大问题,特别是在64位系统上并不是那么稳定。由于IIS上Application Pool默认的故障防护设置(如果在5分钟的间隔内应用程序池的工作进程发生5次崩溃,应用程序池就会关闭),每次崩溃都会引发网站返回HTTP 503的错误。

半年前为了临时解决这个问题,特意设置了故障间隔分数数和最大故障数量,设置5分钟可以接受崩溃20次,没想到现在又出现了:

通过设置故障数延缓崩溃状况

临时的解决办法只能在加大故障间隔和故障数了,根本的解决方法还是需要重构ChinaPay的支付功能,取消原本使用ASP写的支付功能,采用新框架编写支付方式。其实只要仔细阅读官方文档,就会发现文档中已经指出了ChinaPay部分模块对64位系统和.net版本的兼容问题,也有具体的解决办法!

关于故障防护设置(RapidFailProtection),建议直接看官方的资料:Failure Settings for an Application Pool <failure>

自己也可以打开一个应用程序池,右键进入高级设置,选中对应的属性,查看底部的解释说明:

rapidfailprotection底部说明

最后在贴下具体的故障信息,这个故障一般记录在Windows日志的应用程序类别中,来源是Application Error:

错误应用程序名称: w3wp.exe,版本: 8.5.9600.16384,时间戳: 0x52157ba0
错误模块名称: ChinaPay.dll,版本: 2.5.5.1,时间戳: 0x48ae8d38
异常代码: 0xc0000005
错误偏移量: 0x000618c3
错误进程 ID: 0x2de4
错误应用程序启动时间: 0x01d259a1a6a031ae
错误应用程序路径: C:/Windows/SysWOW64/inetsrv/w3wp.exe
错误模块路径: C:/ChinaPayClinetForWin32/ChinaPay.dll



原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/98912.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论