Есть ли у вас какие-либо общие правила, к которым вы прибегаете при устранении сложных сетевых / аппаратных / программных проблем?
Например: «Я изолирую источник проблемы, тестируя периферийное устройство на втором компьютере» или «Я удаляю столько оборудования, сколько возможно, чтобы включить устройство, а затем добавляю обратно компоненты один за другим, пока не смогу воспроизвести проблему» , и т.д.
Просто список моментов, которые я записал для себя после того, как некоторое время боролся с проблемой:
Также был отличный список правил отладки, он был в форме PDF с примерами и объяснениями для каждого из правил. Мне не удалось быстро найти PDF-файл, но я думаю, что это плакат к списку:
Если проблема связана с Интернетом, вероятно, это DNS.
Если проблему сложно диагностировать, вероятно, это ОЗУ.
Если проблема связана с рабочей станцией Windows, вероятно, быстрее всего будет воссоздать ее образ.
Если проблема в пятницу, вероятно, что-то серьезное.
Мне нравится возвращаться к научный метод.
Из (http://en.wikipedia.org/wiki/Scientific_method)
- Определите вопрос
- Собирать информацию и ресурсы (наблюдать)
- Форма гипотезы
- Проведите эксперимент и соберите данные
- Анализировать данные
- Интерпретируйте данные и сделайте выводы, которые послужат отправной точкой для новой гипотезы.
- Документируйте результаты
Как правило, я всегда стараюсь дважды проверить свои основные предположения. Есть ли в нем питание, включен ли он, исправна ли проводка. Очень неприятно тратить часы на поиск неисправности программного обеспечения, когда у вас отсоединен кабель.
Я считаю очень важным на этапе создания гипотезы найти как можно больше возможных причин проблемы. Затем я пытаюсь выбрать идеи для тестирования, исходя из того, насколько легко их протестировать и насколько вероятна идея.
Также важно получить помощь. По возможности проконсультируйтесь с коллегами, поставщиком или кем-либо еще, кто лучше всего разбирается в рассматриваемых системах. Не тратьте много времени на то, чтобы решить проблему, если есть кто-то, кто может помочь вам решить проблему.
У О'Рейли есть хорошая книга Инструменты устранения неполадок сети у которого есть хороший набор шагов, которые очень похож на научный метод. Я нашел книгу очень полезной и настоятельно рекомендую ее. В книге гораздо больше деталей и предлагается много полезных инструментов.
Из Инструменты устранения неполадок сети
- Укажите свою цель
- Определите систему
- Определите возможные результаты
- Определите и выберите то, что вы будете измерять
- При необходимости определите параметры и факторы испытаний.
- Выбрать инструменты
- Установите ограничения измерения
- Проверить экспериментальный план
- Собирать информацию
- Анализировать данные
Смотрите также:
(Эти основные моменты перефразированы из главы «Отладка» «Практика системного и сетевого администрирования»)
Следует знать две вещи:
Знайте, как выглядит «исправленная» версия. Предпочтительно команда, которую вы можете запустить, которая дает определенный результат, когда что-то работает. Например: я пытаюсь понять, почему SSH запрашивает пароль, когда я правильно настроил ключи (по крайней мере, я так думал). Итак, мой тест: "ssh servername uptime", и он должен работать без запроса пароля.
Опишите проблему на нужном уровне. Пользователь, жалующийся на то, что не может проверить связь с сервером, не должен отправлять вас запускать и исправлять сервер. Работа человека не в том, чтобы сидеть и пинговать машину весь день. Они хотят выполнить какую-то задачу, например, использовать машину в качестве DNS-сервера. Пример. Однажды пользователь пожаловался, что не может пропинговать машину на другом конце света. Я провожу день, выслеживая системных администраторов в этой части компании, чтобы выяснить, что не так с этой машиной. Он был выведен из эксплуатации, и они были в панике, потому что думали, что, возможно, они отключили питание не той машины. Я связался с пользователем и сказал: «Помимо проверки связи с этой машиной, что бы вы хотели с ней делать?». Оказалось, что он хотел выполнить на нем определенную работу, и, если бы он соблюдал надлежащую процедуру, его задачи были бы автоматически перенаправлены на заменяющую машину. Я зря потратил весь свой день и время местных системных администраторов. Еще одна причина, по которой «я не могу пинговать» - это не то, что нужно тестировать: часто брандмауэры настроены на отбрасывание пакетов ping, но пропускают другие пакеты. Проверьте, через что вы хотите пройти.
Две стратегии:
Добавка: Продолжайте добавлять компоненты, пока не возникнет проблема. Последнее, что вы добавили, это проблема. Пример: веб-браузеры не могут общаться с сервером. Между сервером и пользователем находится балансировщик нагрузки, брандмауэр, кеш и локальный веб-прокси пользователя. Сначала попробуйте отправить запросы напрямую на сервер, затем через LB на сервер, затем через брандмауэр на LB на сервер и т. Д. И т. Д. Каждый раз, добавляя один компонент.
Субтрактивный: Продолжайте снимать компоненты, пока проблема не исчезнет. Последнее, что вы удалили, было проблемой: Пример: машина с десятками карт не загружается. Вынимайте карты, пока машина не загрузится.
Две части глупой удачи:
Забудь все, что я сказал. Проблема вызвана последним изменением, внесенным в систему. (это работает в 99% случаев ... проблема в том, что в 99% случаев вы не знаете, какое на самом деле было последнее изменение)
Когда все остальное терпит неудачу, проверить на глупости. http://whatexit.org/tal/mywritings/dumb-things-to-check.html Пример: сумасшедшая проблема просто не может быть объяснена. Затем мы проверили файл конфигурации: пользователь отредактировал его, скопировав в окно Windows, отредактировав, а затем скопировав обратно. Теперь в конце каждой строки был символ ^ M. Мы этого не заметили, потому что наш текстовый редактор молча скрывал этот факт. К сожалению, программа, которая считывала файл конфигурации, превратила эти ^ M в неразрывное пространство, что мешало выполнению множества других процедур.
Общие практики, которые я запоминаю на протяжении всего процесса:
Во время устранения неполадок здесь определяется моя основная методология:
Позиции, которых я пытаюсь придерживаться:
Мне полезно придерживаться таких позиций - они мешают мне вскидывать руки вверх, объявлять что-то «странным», а затем сдаваться или становиться несчастным, потому что это кажется «неразрешимым».
Как я думаю об устранении неполадок:
Процесс устранения неполадок:
Интернет не работает? Проверьте проблему и найдите веб-сайт, на который они не могут попасть. Быстрые тесты включают их подключение к интернету (работает), загружается ли у меня (нет). Быстрые тесты указывают на то, что это сайт. Увидев, что проблема возникает у меня, я быстро избавился от вероятности их ПК, браузера, DNS, брандмауэра офиса учетных записей пользователей и т. Д.
Итак, сайт не загружается, что теперь? Это пока не исправимо, поэтому ищите места, где можно решить проблему поменьше. Сервер включен? Это пингует? DNS работает? Да. Служба отвечает на 80 порт? Нет. Служба работает? Нет. Начинается? Нет. Выдаются ли ошибки в журнале событий / файлах журнала? Да! Что они говорят?
Это эффективное и быстрое устранение неполадок, потому что оно постоянно направлено на сужение объема проблемы. Если бы я принял их отчет о том, что Интернет не работает, я бы ошибся, подумав, что это сбой соединения. Если бы я принял мое первое наблюдение, что он не загружается для них, я бы тратил время на их компьютер, думая, что он виноват.
Вырежьте куски из «вещей, которых не может быть» как можно больше.
Разберитесь в системе. Чем больше у меня общих знаний о системе, тем легче она становится. В тех случаях, когда у меня слабое понимание, проблемы более устрашающие, более трудные, более медленные и с большей вероятностью закончатся обходным путем, чем исправлением, или большим тупым медленным исправлением (переустановкой), чем небольшим, точным хирургическим исправлением.
Обычно я спрашиваю: «Что изменилось, что могло вызвать эту проблему»? Большинство проблем вызвано изменениями заведомо исправных конфигураций. Если вы можете выделить, кто внес изменения, то обычно вы получите ответ.
Думаю, это умение, а не наука. Бывают случаи, когда вы идете по неверному пути, но по большей части:
Однажды мой босс позвонил мне со «старшим» инженером по телефону - он сказал мне, что у него один сервер, который не может подключиться, и он попытался переключить кабель, но все равно безуспешно. Я слышал фоновые звуковые сигналы, как будто ИБП работает от батарей. Я спросил его, видит ли он активность переключателя, он сказал нет. Я спросил его, исходит ли звуковой сигнал от ИБП, он сказал да, я спросил его, видит ли он вообще какие-либо огни в стойке, он сказал нет ... Смотрите дальше своего носа - это помогает!
Я начинаю с проверки очевидного. Появляется ли сообщение об ошибке, объясняющее, в чем проблема? Все ли правильно подключено? Я не люблю тратить несколько часов на устранение неполадок, которые можно было бы решить за несколько минут. Я думаю, что можно быть слишком методичным. Я видел, как люди тратили целый день на воспроизведение проблемы, несмотря на то, что я им точно объяснил, в чем проблема. Я плачу им не за это.
Если ответ неочевиден, выведите в ряд подозреваемых и сначала проверьте их. Только после проверки вероятных подозреваемых следует проверять маловероятных подозреваемых. Тогда вы можете быть настолько научными, насколько хотите.