2013-03-06 3 views
3

Меня попросили посмотреть на сервер, который замедлился до остановки. На сервере есть сотни классических ASP-сайтов, работающих на нем, и, изучив некоторый код, я вижу, что существует множество случаев, когда ADODB.Recordset (плюс другие) объекты открываются, используются, но никогда не уничтожаются (устанавливаются в Nothing). Я ценю, что могут быть и другие проблемы, которые я еще не заметил ...Мониторинг/утечки памяти/проблемы в классическом ASP

Оригинальные разработчики кода отказываются брать на себя какую-либо ответственность, поскольку они заявляют, что после первоначального развертывания сайтов они отлично работали годами ,

Недостаточно часов в день, к сожалению, для проверки всего кода на всех сайтах. Поэтому существует ли какое-либо приложение, которое может контролировать использование памяти, утечки или что-нибудь, что может помочь диагностировать причину этой остановки сервера?

Первоначально сайты были на Win2003, IIS6, но теперь были перенесены на Win2012, IIS8. Сейчас замедление замечено и на новом сервере, поэтому я уверен, что это не аппаратная ошибка.

Любые предложения будут оценены. Обратите внимание, что я отметил это с помощью ASP.NET, так как я ценю, что большинство классических ASP-разработчиков теперь используют .NET, но могли бы предложить что-то из их опыта ...

+0

Можно настроить пулы приложений на перезапуск, как только будет достигнут определенный порог памяти. Это, по крайней мере, немного портит вещи, но время от времени оно будет сбрасывать ваши сайты. Для отладки изучите диагностику отладки IIS. Http://support.microsoft.com/kb/919790 –

ответ

0

Кроме входа в каждый файл и настройки вручную каждый Recodset, Connection, Command и т. д. ничего не значит, я не думаю, что вы многое можете сделать.

У меня было что-то подобное лет назад, и единственным моим решением было выше.

Извините!

1

Возможно, что все открытые соединения могут вызвать проблемы при высокой нагрузке, но даже в ASP Classic была некоторая достойная сборка мусора. Объекты и соединения, оставленные открытыми, автоматически закрывались при обработке страницы. См. Также: https://stackoverflow.com/a/1613337/25163

В прошлом я использовал грубый ASP Profiler, чтобы найти, где конкретные узкие места находятся на сайтах ASP/VBScript, которые я до сих пор поддерживаю. Я бы посмотрел журналы на какие-то конкретные страницы с проблемным временем загрузки и нацелился на них первым.

Если у вас еще нет программы для этого, я использовал бесплатную версию SmarterStats по нескольким проектам. Сервер, который запускает SmarterStats, должен был бы иметь возможность запускать сайт ASP.NET.

Без дополнительных исследований в наиболее проблемных областях любые другие рекомендации - это выстрел в темноте. Тем более, что реальная проблема может быть так же вероятной на конце базы данных. Профилирование проблемных страниц поможет найти это.

+0

Очень полезный ответ, спасибо. Снова я чувствую себя в данный момент, как его выстрел в темноте. У меня сильный фон программирования и вы можете увидеть лодку с проблемами с кодом. Это всего лишь случай, когда нужно изолировать наихудшее приложение ...! – EvilDr

0

Уничтожение наборов записей (ничего не меняет) из моего опыта не влияет на производительность. Вам необходимо проверить такие вещи, как:

  • Соединения с базой данных открываются, а затем не закрываются.
  • Использование переменных приложения (они жевают тонну памяти).
  • Чрезмерное использование переменных сеанса (в некоторой степени).
  • Вытягивание ненужных данных или исправление подкачки с использованием SQL-запросов.
  • Чрезмерные операции с файлами.