我们有一个在.Net framework 4.0上运行的ASP.Net Web应用程序。
架构就像,
.Net模块 - > VB6 COM +数据对象 - > VB6 COM +计算模块 - >第三方COM + Finance Factory(已安装COM)。
最终用户通过收集客户详细信息,车辆详细信息,财务详细信息并在单个计算按钮单击中计算多个参数来创建合同,然后将所有数据提交给另一个系统。
问题: 间歇性地,在计算交易时(在交易上单击计算按钮时)会抛出“Out of Memory”错误并且计算未成功完成。这会影响业务。 我们发现它被抛入VB6 COM +计算模块 - >在Initialize方法中。
此方法初始化第三方(已安装)COM对象并以xml格式(预定义)提供必要的数据进行计算,立即返回响应并结束子例程。
我们知道此错误仅在此方法中发生,并且不确定导致此错误的语句。而这仅仅发生在生产环境中。没有其他(测试)环境能够被复制。
使用此方法记录任何日志并将代码重新部署到Production中是很高风险的,因此我们无法在此处获得任何日志信息。这是一个问题,从一开始就偶尔发生,但自6-8个月以来频繁发生。
错误消息:Sub:Initialize
错误号码:7
错误说明:"内存不足"
环境细节: Windows 2003 Server SP 2,具有3 GB的物理内存。我们的应用程序COM对象使用Apartment Thread模型构建并在MTS中注册。
我们进行了负载测试,压力测试,但仍然无法复制问题。因此我们也无法找到根本原因。我们花了足够的时间在这上面并且还在苦苦挣扎。