У меня есть классическая ASP CRM, созданная сторонней компанией. В настоящее время у меня есть доступ к исходному коду и я могу внести любые необходимые изменения.
Случайно в течение дня, обычно после некоторого длительного использования пользователями, на большинстве моих страниц появляется ошибка «Недостаточно памяти».
Способ создания приложения - все страницы и сценарии извлекают основные функции из файла Global.asp. В этом файле также встраиваются другие глобальные файлы, но представленная ошибка показывает
Недостаточно памяти
WhitherScriptYouTriedToRun.asp Строка 0
Строка 0 является включением для файла global.asp. Как только ошибка возникает, через неопределенное время происходит ее возникновение в течение некоторого времени, но затем она начинает повторяться снова. С тем, как написано приложение, и какими функциями он пользуется, а также с «диагностикой», которую я уже выполнил - похоже, это часто используемая функция, которая удерживает данные, такие как набор записей или что-то в этом роде, а затем не выпускает их должным образом. , Затем другие пользователи пытаются использовать ту же функцию, и в итоге она просто заполняется, вызывая ошибку. Единственный способ эффективно устранить ошибку - перезапустить IIS, перезапустить пул приложений и перезапустить службы SQL Server.
Само собой разумеется, я и мои пользователи раздражаются ....
Я не могу точно определить ошибку из-за фактического сообщения об ошибке, представляющего собой Строку 0 - но оттуда я понятия не имею, где в строках кода 20К это может зависать. Любые мысли или идеи о том, как изолировать или, по крайней мере, указать мне правильное направление, чтобы начать прояснение этого? Есть ли способ для меня, чтобы увеличить размер "памяти" для VBScript? Я знаю, что есть ограничение, но установлено ли оно, скажем ... 512 КБ, и вы можете увеличить его до 1 ГБ?
Вот что я пробовал:
- Удаление встроенных операторов SQL в представления
- Прохождение нескольких сотен сценариев и обеспечение того, чтобы за каждым OpenConnection & OpenRecordSet следовал соответствующий Close.
- Просмотр глобального файла и комментирование любых больших операторов SQL, таких как ApplicationLog (функция, которая записывает выполненный запрос в таблицу).
- Некоторые мелкие правки скрипта.