Назад | Перейти на главную страницу

Полный снимок сервера для устранения неполадок производительности?

Время от времени с нашим сайтом что-то происходит, что делает его медленным и не отвечает. Неизбежно это происходит примерно в 3 часа ночи, в день, когда все разработчики рано ложатся спать.

Есть ли какие-нибудь хорошие инструменты для создания «моментального снимка» состояния веб-сервера и сервера БД в данный момент? Я хочу получить электронное письмо с полным отчетом - что делал процессор? какой процесс перемалывает диски? Очередь рабочего процесса ASP.NET вышла из-под контроля? длительные запросы к базе данных?

Это для коробки Windows Server 2008 R2, на которой работает IIS, и экземпляра SQL Server 2008 R2.

По сути, я хочу видеть достаточно материала, чтобы иметь некоторую надежду выяснить, что замедляло работу.

Лучший способ решить эту проблему - это сбор данных о производительности, как бы скучно это ни звучало.
Для хостов Windows, по моему скромному мнению, Perfmon по-прежнему предоставляет лучший способ сделать это. Вот что я бы сделал: запускал perfmon с основными счетчиками до и во время проблемного периода (несколько часов), он должен включать основные счетчики для оперативной памяти, диска, сеть и процессор. используйте Performance Analys Tool PAL http://pal.codeplex.com/releases/view/51623 для анализа результирующих журналов. Отчет PAL в форме HTML-страницы должен предоставить вам несколько графиков и предупредить вас, если у вас есть проблемы с производительностью. PAL также имеет профиль производительности SQL-серверов.
Чтобы лучше понять результаты perfmon и исправить основные проблемы, я предлагаю прочитать следующие статьи:
http://www.grumpyolddba.co.uk/monitoring/monitoring.htm (раздел о счетчиках) http://www.brentozar.com/sql/sql-server-performance-tuning/ http://www.sqlservercentral.com/blogs/sqlmanofmystery/2009/09/14/the-fundamentals-of-storage-systems-introduction/

Похоже, вы могли бы использовать программу мониторинга с информацией о тенденциях. Я не знаю, какое решение подойдет вам лучше всего в мире Windows, но я опишу в общих чертах, как я мог бы решить аналогичную проблему на компьютере с Linux, используя программу мониторинга под названием Zabbix (Zabbix может отслеживать Windows, но сервер должен работать в Linux). Для вас методы будут разными, но концепции останутся прежними, и, надеюсь, они могут быть вам полезны в качестве руководства.

Сначала я мог настроить Zabbix для отслеживания загрузки процессора на моем хосте, а также памяти и так далее. Я бы подумал о том, чтобы он также контролировал системный журнал на хосте, хотя я всегда могу просмотреть системный журнал в локальной системе.

Затем я бы настроил триггер, который срабатывает, когда загрузка процессора превышает 90% в нерабочее время. Я бы связал действие с триггером, который был удаленной командой, которая запускала сценарий на удаленном хосте. Скрипт извлечет дамп запущенных в данный момент процессов вместе с некоторыми другими текстовыми данными и отправит их на сервер Zabbix. Данные будут помещены в элемент журнала, специально предназначенный для захвата этих данных в контексте хоста. В качестве альтернативы я мог бы заставить удаленный скрипт сделать больший дамп системных данных и отправить его по электронной почте определенным пользователям.

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

Я предполагаю, что ваши процессоры переходят в спящий режим. Так что попробуйте следить за состоянием процессоров ...