Моя компания разрабатывает веб-приложение для просмотра данных, для нормальной работы которого требуется довольно приличная пропускная способность. Однако в последнее время мы многое меняем. Например, мы изменили нашу внутреннюю сетевую инфраструктуру, чтобы данные можно было размещать на отдельных машинах, подключенных через Gigabit Ethernet. Кроме того, само приложение продолжает выходить с новыми версиями, так как мы все еще находимся в стадии альфа- и бета-тестирования.
Недавно мы внесли некоторые изменения, которые снижают производительность, и мы хотим попытаться определить, в чем проблема, прежде чем мы начнем разбирать вещи. Это очень маленькая сеть, и у меня ограниченный опыт работы ИТ-администратором. У меня есть несколько идей, с чего начать, но я хотел бы сначала извлечь немного мудрости из опыта профессионалов: как решать / избегать подобных проблем? Какие наиболее полезные (Windows) инструменты вы использовали?
Я всегда придерживаюсь такого подхода: старайтесь тестировать что-то одно за раз.
Надежный «научный метод» действительно хорошо работает для устранения неполадок:
Для веб-приложения это может означать:
также запуск базовых тестов для тестирования процессора, памяти и скорости диска может помочь решить одну из этих проблем, прежде чем вы пойдете дальше.
Я все время вижу такие вещи:
резервное копирование на новом сервере занимает больше времени, чем на старом.
Но никто не проводил базовый тест диска, чтобы узнать, что у старого сервера было вдвое больше шпинделей, чем новый сервер ... или тест сети, чтобы выяснить, что новые серверы Gigabit Ethernet работают только на 100M.
При всем при этом, если это настраиваемое веб-приложение, у используемой вами инфраструктуры определенно есть способ сбрасывать информацию о производительности в файл журнала ... но это скорее вопрос для stackoverflow.
Сумма приведенных выше ответов составляет 90% того, что я бы сказал, вот остальные 10%:
Я подписался на метод устранения неполадок «Шерлок Холмс», также известный как метод устранения неполадок двоичного поиска:
По моему опыту, иногда вам везет, пробуя сначала некоторые очевидные вещи, но как только вы исчерпаете действительно быстрые решения, вам нужно быстро стать методичными.
Этот метод совместим с научным методом и тестированием по одному.
Некоторые из лучших инструментов для устранения неполадок Windows взяты из Microsoft Sysinternals. И некоторые из лучших сведений о том, как их использовать (и техническую информацию о Windows в целом), можно найти на сайте Марка Руссиновича. блог и Интернет-трансляции. Его книга о Внутреннее устройство Windows также полон хорошей информации.
Учитывая вышесказанное, я бы предложил начать с программ Process Explorer и Process Monitor, чтобы взглянуть на любую запущенную веб-службу и посмотреть, что происходит. Обе программы позволяют отображать большой объем информации о запущенных процессах, которую можно настроить, щелкнув правой кнопкой мыши заголовки столбцов.
Что было изменено, что привело к проблемам с производительностью? Если бы только код был изменен, то я бы начал с него устранение неполадок.
Сравните статистику проблемы с известным хорошим состоянием и найдите расхождения.
Известное хорошее состояние может быть фактическим задокументированным состоянием. Он также может быть основан на стандарте ожидаемого поведения, таком как известное ожидаемое поведение сетевых протоколов или таких как практические правила о соответствующем среднем использовании ЦП.
Примеры:
Используя Wireshark или другой инструмент сетевого сниффера, вы постоянно видите повторяющиеся пакеты. Теперь вы можете попытаться понять, почему вы видите один и тот же IP-пакет на проводе. Возможно, у вас есть сценарий «локального маршрутизатора», или возможно, что-то фрагментирует IP-пакеты.
Средняя загрузка ЦП составляет 90%. Если среднее значение составляет 90%, то сервер, вероятно, часто загружает ЦП на максимум, что вызывает резервное копирование всего.
По рекомендации Джон Т, Мне нравится использовать dstat с gnuplot.