Как надежно определить аномальное потребление ресурсов? - PullRequest
2 голосов
/ 23 декабря 2008

Этот вопрос касается целого класса подобных проблем, но я задам его в качестве конкретного примера.

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

Неважно, что это такое - например, это может быть очередь «работы».

Во время «нормальной» работы доступное пространство изменяется в «нормальных» пределах, но возможны патологии:

  • Некоторые другие (возможно, внешние) компонент, который добавляет работу, может закончиться управления
  • Некоторые компоненты, удаляющие работу, блокируются, но остаются незамеченными

Статистические характеристики процесса в основном неизвестны.

То, что я ищу, - это алгоритм, который принимает в качестве входных данных периодические периодические измерения доступного пространства (альтернативные предложения для ввода приветствуются) и выдает в качестве выходных данных сигнал тревоги, когда все «ненормально», и файл система "скорее всего заполнится". Очевидно, что важно избегать ложных негативов, но почти так же важно избегать ложных срабатываний, чтобы не заглушить мозг сисадмина, который получает сигнал тревоги.

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

Алгоритмы, которые учитывают сохраненные исторические измерения, хороши, хотя предпочтительны алгоритмы на лету, которые минимизируют количество исторических данных.


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

Есть три случая, я думаю, представляющих интерес, не по порядку:

  1. Сценарий «Продажи Harrods только что начался»: пик активности, который с разрешением в одну секунду «вне шкалы», но не представляет реальной опасности истощения ресурсов;
  2. Сценарий «Глобальное потепление»: необходимость планирования (относительно) стабильного роста; и
  3. Сценарий "Google отправляет мне нежелательную копию индекса": это приведет к истощению всех моих ресурсов в относительно короткие сроки, если я не предприму что-либо, чтобы остановить его.

Это последний, который (я думаю) наиболее интересный и сложный, с точки зрения системного администратора.

1 Ответ

1 голос
/ 23 декабря 2008

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

В общем случае вы могли бы попытаться (множественная?) Линейная регрессия на исторических данных, чтобы определить, есть ли статистически значимая тенденция к росту использования ресурсов, которая может привести к проблемам, если она продолжится (вы можете также сможете предсказать, сколько времени это должно продолжать приводить к проблемам с этой техникой - просто установите порог для «проблемы» и используйте наклон тренда, чтобы определить, сколько времени это займет). Вам придется поиграть с этим и с переменными, которые вы собираете, чтобы увидеть, есть ли какие-либо статистически значимые отношения, которые вы можете обнаружить в первую очередь.

Хотя он охватывает совершенно другую тему (глобальное потепление), я обнаружил, что блог Тамино (tamino.wordpress.com) является очень хорошим ресурсом по статистическому анализу данных, который полон известных и неизвестных. Например, см. этот пост.

edit: согласно моему комментарию, я думаю, что проблема несколько аналогична проблеме GW. У вас есть краткосрочные всплески активности, которые усредняются до нуля, и долгосрочные тренды накладываются на то, что вас интересует. Также, вероятно, существует более одного долгосрочного тренда, и он время от времени меняется. Тамино описывает технику, которая подходит для этого, но, к сожалению, я не могу найти пост, о котором я думаю. Он включает в себя скольжение регрессий по данным (представьте, что несколько строк соответствуют шумным данным) и позволяет данным выбирать точки перегиба. Если бы вы могли сделать это, то, возможно, могли бы выявить существенное изменение тренда. К сожалению, это может быть идентифицировано только после факта, так как вам может потребоваться накопить много данных, чтобы получить значимость. Но это все еще может быть вовремя, чтобы предотвратить истощение ресурсов. По крайней мере, это может дать вам надежный способ определить, какой запас прочности и ресурсы в резерве вам понадобятся в будущем.

...