我有一个经由第三方公司构建的经典ASP CRM。目前,我可以访问源代码并进行必要的更改。
在一天中的随机时间,通常是用户长时间使用后,我的大多数页面开始出现内存不足错误。
应用程序的构建方式是,所有页面和脚本都从Global.asp文件中提取核心功能。该文件中还嵌入了其他全局文件,但所呈现的错误显示为:
“内存不足 WhateverScriptYouTriedToRun.asp Line 0”
Line 0是global.asp文件的包含行。一旦出现错误,在未指定的时间后,错误就会消失一段时间,但然后开始再次出现。根据应用程序的编写方式、它使用的函数以及我已经完成的“诊断”,似乎是一种常用的函数在保留数据(如记录集)时没有正确释放它。然后其他用户尝试使用相同的函数,最终导致错误。我有效地清除错误的唯一方法是重新启动IIS、回收应用程序池并重启SQL Server服务。
不用说,我和我的用户都感到烦恼......
由于实际的错误消息显示为Line 0,我无法确定错误位置,但是我不知道在20K行代码中它可能卡住了哪里。您对如何隔离或至少指引我开始解决此问题的任何想法或建议?是否有一种方法可以增加VBScript的“内存”大小?我知道有限制,但它设置在512K,您可以将其增加到1GB吗?
下面是我尝试过的事情:
1. 将SQL内联语句转换为视图。 2. 浏览几百个脚本,并确保每个OpenConnection和OpenRecordSet后跟适当的Close。 3. 浏览全局文件,并注释掉任何大型SQL语句,例如ApplicationLog(一个将执行的查询写入表格的函数)。 4. 进行了一些较小的脚本编辑。
在一天中的随机时间,通常是用户长时间使用后,我的大多数页面开始出现内存不足错误。
应用程序的构建方式是,所有页面和脚本都从Global.asp文件中提取核心功能。该文件中还嵌入了其他全局文件,但所呈现的错误显示为:
“内存不足 WhateverScriptYouTriedToRun.asp Line 0”
Line 0是global.asp文件的包含行。一旦出现错误,在未指定的时间后,错误就会消失一段时间,但然后开始再次出现。根据应用程序的编写方式、它使用的函数以及我已经完成的“诊断”,似乎是一种常用的函数在保留数据(如记录集)时没有正确释放它。然后其他用户尝试使用相同的函数,最终导致错误。我有效地清除错误的唯一方法是重新启动IIS、回收应用程序池并重启SQL Server服务。
不用说,我和我的用户都感到烦恼......
由于实际的错误消息显示为Line 0,我无法确定错误位置,但是我不知道在20K行代码中它可能卡住了哪里。您对如何隔离或至少指引我开始解决此问题的任何想法或建议?是否有一种方法可以增加VBScript的“内存”大小?我知道有限制,但它设置在512K,您可以将其增加到1GB吗?
下面是我尝试过的事情:
1. 将SQL内联语句转换为视图。 2. 浏览几百个脚本,并确保每个OpenConnection和OpenRecordSet后跟适当的Close。 3. 浏览全局文件,并注释掉任何大型SQL语句,例如ApplicationLog(一个将执行的查询写入表格的函数)。 4. 进行了一些较小的脚本编辑。