PDA

Просмотр полной версии : Limiter - инструментарий системного администратора


gor-
15.12.2009, 03:30
Приветствую.
Данный пост рассчитан на людей, которые занимаются администрированием линукс систем, в особенности систем, где пользователи или процессы могут создавать трудно прогнозируемую настройку.

Итак, Limiter - это демон, работающий постоянно и следящий за процессами.
Он может ограничивать CPU % (а попросту сколько процессорного времени) будет выделено конкретному процессу или группе процессов.

Так же есть возможность, в зависимости от loadavg, убивать процессы, изменять приоритет, запускать скрипы.

При этом запуск скрипов можно осуществлять как при росте нагрузки, так и при ее падении. Это определяется параметрами правила.

Простейшие примеры, в которых я использую этот демон:

- убить все процессы не принадлежащие root и mysql, при критической нагрузке.
- при спасении нагрузки , поднять httpd, почту, фтп и другое.
- ограничить процесс cp,gzip - 5% CPU.

Что это мне дает:
- если на сервере сверх нагрузка, и я сейчас не в консоли, я все равно смогу зайти по ssh. Так как потенциально скрипу, что грузил - будет убит, и нагрузка пойдет вниз.
- если я сейчас где- то далеко от возможности выйти в инет, сервер сам справится с источником нагрузки (конечно если это единичная попытка оверлоада), или продержит сервер на плаву, пока я доберусь до SSH.
- исключить нагрузку на сервере от процесса бекапа.

… И многое другое.

Если это то, что вам надо и вы это давно искали - более детальную документацию и демо на 7м дней можно найти тут: http://it-patrol.ru/limiter/details

Himiko
15.12.2009, 09:31
Стоимость: 700 руб / месяц
"Нормальный" админ сам себе такой скрипт напишет, если он ему потребуется, имхо.
Данный пост рассчитан на людей, которые занимаются администрированием линукс систем
Я думаю, что вы не верно выбрали целевую аудиторию скрипта.

Himiko добавил 15.12.2009 в 12:38
Да и писать скрипты для админов - это как-то странно:)

myhand
15.12.2009, 14:11
для решения задач, перечисленных ТС есть нормальные инструменты
_разные_
1) системные лимиты (например, pam_limits)
2) скрипты инициализации демонов (где также можно выставить определенные приоритеты, ограничения - включая cpulimit, ionice)
3) мониторинг (monit, zabbix, etc). уже monit умеет делать все
то, что вы заявили.

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

закапывайте

Himiko
15.12.2009, 14:15
myhand, ТС видимо не понимает, у потребителей, на которых он расчитывает (админы), в таком софте просто нет необходимости.

Лично моё имхо - ТС изобрёл велосипед и пытается его продать создателям мопеда с педалями:)

myhand
15.12.2009, 15:00
myhand, ТС видимо не понимает, у потребителей, на которых он расчитывает (админы), в таком софте просто нет необходимости.

необходимость - есть.

просто ТС стоит начать с перечисления приемуществ
своей системы перед открытыми конкурентами.

пока их не видно. потому запускать посторонний бинарник из
под рута нет ровно никакого резону.

Himiko
15.12.2009, 15:06
необходимость - есть.

просто ТС стоит начать с перечисления приемуществ
своей системы перед открытыми конкурентами.

пока их не видно. потому запускать посторонний бинарник из
под рута нет ровно никакого резону.
Лично мне проще написать свой скрипт под свои нужды.
Это удобнее (знаю, что он делает и зачем) и не нужно никаких денег платить за лицензию.
Либо воспользуюсь бесплатными аналогами. Свой скрипт предпочтительнее.

gor-
15.12.2009, 15:29
Спасибо за ответы.
Сейчас постараюсь детально ответить после каждого поста с вопросами.

gor- добавил 15.12.2009 в 16:11
для решения задач, перечисленных ТС есть нормальные инструменты
_разные_
1) системные лимиты (например, pam_limits)
2) скрипты инициализации демонов (где также можно выставить определенные приоритеты, ограничения - включая cpulimit, ionice)
3) мониторинг (monit, zabbix, etc). уже monit умеет делать все
то, что вы заявили.


Да вы перечислили хороший набор.
Например из этого набора сам использую ionice (для ограничения приоритета доступа к диску процессом бекапа, напрямую зависит от новых ядер линукса), zabbix (все мои собственные сервера и сервера клиентов стоят на этом мониторинге, и все уведомления я получаю своевременно, в том числе ввиде СМС)
За ссылку на monit - спасибо, не видел данной утилиты ранее.

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

Перечислю преимущества limiter перед cpulimit:
- Возможность ограничивать процессоры не по pid а по username, имени программы (/bin/gzip например)
- работает сразу с пакетом программ, можно указать неограниченное количество правил для ограничения по CPU.
- есть возможность указания % как для единичного процесса, так и для группы процессов подпадающее под правило (например суммарный %CPU для всех процессов /bin/gzip не должен превышать 80%CPU)
- limiter не ограничивается только этой возможностью, есть возможность применять правила к процессам, в зависимости от loadavg, а именно - изменять приоритет задачи, убивать задачу, запускать скрипт (смотрите документацию (http://it-patrol.ru/limiter/details/настройка-правил-на-примере-rulesddanger-и-rulesdcritical) на примере файлов rules.d/danger и rules.d/critical).

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

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

Монит больше конкурирует с zabbix чем с моим продуктом.
Мне конкурировать с zabbix, nagios нет смысла - совершенно разные цели работы.

Вот такой предварительный анализ сравнения.

Однозначно нет и не ожидается в моей утилите:
- мониторинг файловой системы
- система уведомления, прицепить можно через внешний скрипт, но лучше использовать zabbix
- тестирование сервисов на предмет работоспособности

Чего нет в monit (возможно что то упустил, сужу только по manual-у)
- все тоже что было написано в сравнении с cpulimit
- при дописывании собственных скриптов, можно ,как пример, останавливать апач при loadavg например 30, и поднимать его обратно при loadavg 10. (сам использую)
- согласно правилам - убивать скрипты, процессы, задачи. Например можно выставить что при loadavg >= 20 - убить все php скрипты.


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

Обязательно сделаю поиск по google более детальный для выявление близко стоящих скриптов и программ, хоть как то перекрывающие возможности limiter.

gor- добавил 15.12.2009 в 16:16
"Нормальный" админ сам себе такой скрипт напишет, если он ему потребуется, имхо.
Я думаю, что вы не верно выбрали целевую аудиторию скрипта.
Да и писать скрипты для админов - это как-то странно:)

Отмечу только что это не скрипт, а бинарная программа.

И в ближайшее время на сайте будут выложены готовые правила для таких популярных панелей как:
- cpanel
- plesk
- directadmin

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

myhand
15.12.2009, 16:58
За ссылку на monit - спасибо, не видел данной утилиты ранее.

открытых мониторингов не так много, чтобы не знать их _все_.


Перечислю преимущества limiter перед cpulimit:
- Возможность ограничивать процессоры не по pid а по username, имени программы (/bin/gzip например)
- работает сразу с пакетом программ, можно указать неограниченное количество правил для ограничения по CPU.
- есть возможность указания % как для единичного процесса, так и для группы процессов подпадающее под правило (например суммарный %CPU для всех процессов /bin/gzip не должен превышать 80%CPU)


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

ограничения по бинарнику типа /bin/gzip - вообще сомнительные. а если /home/user/bin/gzip ? :)


- limiter не ограничивается только этой возможностью, есть возможность применять правила к процессам, в зависимости от loadavg


все это умеет и monit и любой более функциональный мониторинг, типа zabbix.


Монит больше конкурирует с zabbix чем с моим продуктом.


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


Чего нет в monit (возможно что то упустил, сужу только по manual-у)
- все тоже что было написано в сравнении с cpulimit


это вообще не дело мониторинга - это задача статических правил.

вообще, мое сугубое ИМХО - планировщику помогать нужно, а не палки в колеса ставить всякими cpulimit/limiter. для того, чтобы управлять планировщиком - есть приоритеты. то же самое
касается I/O шедулера.


- при дописывании собственных скриптов, можно ,как пример, останавливать апач при loadavg например 30, и поднимать его обратно при loadavg 10. (сам использую)
- согласно правилам - убивать скрипты, процессы, задачи. Например можно выставить что при loadavg >= 20 - убить все php скрипты.


ну можно, конечно :) все уже украдено до нас :D

gor-
15.12.2009, 17:23
это вообще не дело мониторинга - это задача статических правил.

вообще, мое сугубое ИМХО - планировщику помогать нужно, а не палки в колеса ставить всякими cpulimit/limiter. для того, чтобы управлять планировщиком - есть приоритеты. то же самое
касается I/O шедулера.



LImiter - это не мониторинг система, это скорее набор правил для реагирования, отталкиваясь от loadavg, с модулем ограничения процессов ПО %cpu.

С вашим ИМХО согласен, но только в случае выделенного сервера, под выделенный проект.
Там и надо играться с конкретными процессами и настройками, ибо задача - чтоб все работало, а не , как вы сказали, палки в колеса ставить.

Спасибо за указание промаха, я постараюсь сделать на страницах продукта больше акцент на ВебХостингПанели , вместо фразы "систем, где пользователи или процессы могут создавать трудно прогнозируемую настройку."

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

Ну и последний контр довод, который тут никто не привел.
Вместо Лимитера можно использовать 4х админов, работающих по 8м часов.

Они будут получать сообщения от Zabbix системы, и оперативно с достаточно большой долей ИНТЕЛЕКТА - будут реагировать на проблемы на сервере.


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

Andreyka
15.12.2009, 21:19
sim и prm от rfxn делают тоже самое

gor-
15.12.2009, 21:33
sim и prm от rfxn делают тоже самое

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

В остальном согласен, он может многое, и часть идеи какраз взято из этого источника , а именно срабатывание от уровня нагрузки.

Главное отличие, что limiter срабатывает немедлено, висит уже в памяти и в основном не требует дополнительных ресурсов для изменения приоритета, убивания или замораживания процессов.

В случае катастрофической нехватки памяти - SIM не сработает, limiter - сработает.

PRM - работает аналогично SIM и имеет теже недостатки. Еще одно отличие - он не делает "ограничение" по CPU - он просто убивает процесс.

Есть еще SPRI от того же разработчика. С теми же недостатками. Данная утилита делает смену приоритетов ( renice) для процессов на базе нагрузки.
Идея класная, но одним изменением приоритетов у процессов, стабильность сервера не сделаешь.

Andreyka
15.12.2009, 21:35
А вообще - надо просто сервер настроить так, чтоб он не падал о LA.
Интересно, что будет делать скрипт когда внезапно станет WA под 80% от сдыхающего винта?

Himiko
15.12.2009, 21:53
Пара отличий, SIM надо запускать по крону.
Поэтому у меня всё делаю бинарники, которые висят в процессах:)
Т.к. раз в минуту по крону - это медленно. Сервер может завалиться раньше.

P.S.: Когда мне это потребовалось, я переписал всё на FreePascal )
Использует только общие функции, поэтому легко собирается на любом Linux или FreeBSD :)

gor-, всё конечно хорошо, но мне всё-таки кажется, что вы изобрели "велосипед" и пытаетесь его в аренду сдавать за 700 рублей в месяц :)

gor-
15.12.2009, 21:58
Himiko, знаю что медлено, потому и писал свой limiter.
Но я решил пойти дальше, и развивать эту програму платно.
Не все админы могут писать проги, да и не должны.
Эта программа для тех кто хочет и понимает что это именно сэкономит их время.

Кто же считает что по старинце кучей крон скриптов, и самописом проще пользоваться - видимо просто не ценят свое время.

gor- добавил 15.12.2009 в 22:00
А вообще - надо просто сервер настроить так, чтоб он не падал о LA.
Интересно, что будет делать скрипт когда внезапно станет WA под 80% от сдыхающего винта?

Конечно не только надо но и необходимо.

Приведите пример ограничения perl скрипта на linux машине, запускаемого из под APache через suexec. Который делает тоже что и ваше предложение - убивает винт большим ИО?

При этом учтите, что вы не знаете заранее, что пользователь %username% установит этот скрипт на сервер.

Himiko
15.12.2009, 22:01
Кто же считает что по старинце кучей крон скриптов, и самописом проще пользоваться - видимо просто не ценят свое время.
Можно сказать по-другому: Кто считает, что нужно покупать "сомнительную" программу, вместо того чтобы включить мозги и написать самому всё, что ему требуется, тот видимо не ценит свои нервы:)

Не знаю как у других, но у меня много разных скриптов есть в наличии для разных ситуаций. (не первый день занимаюсь администрированием)
Плюс есть знания, которые я могу применить, если потребуется.

P.S.: Я всё-таки придерживаюсь мнения, что админ - это не тот человек, которому нужно всё принести на блюдце, разжевать и в рот положить, только лишь бы деньги платил. Типа "вот скрипт, всё сам делает, а ты отдыхаешь".

gor-
15.12.2009, 22:06
Himiko для вас это велосипед, потому что вы написали уже свой, только на паскале?)
Пиплы - не нравится идея, или вы реализовали свою для себя и пользуйетесь - на здоровье.

Но давайте вместо высказывание "БУ велосипед" , вести беседу в конструктивном русле?
Есть алтернативные программы? Пишите о них - пусть о узнают и другие посетители форума.
Здоровая конкуренция - всегда хорошо.

PS мы все когда то начинали, и когда то были новичками. Вот и сейчас есть новечки в этой сфере и у них банально не хватает знаний чтоб написать "сомнительный" скрипт

Himiko
15.12.2009, 22:08
Himiko для вас это велосипед, потому что вы написали уже свой, только на паскале?)
Потому что пишу то, что мне нужно сам. Да и бесплатных программ куча и каждая со своими плюсами.
Здоровая конкуренция - всегда хорошо.
Думаю, что здесь нет конкурентов.
Не видел ещё ни одного, кто бы продавал подобное ПО.
Тем более, что вы на админов расчитываете. (как целевая аудитория)

Вот и сейчас есть новечки в этой сфере и у них банально не хватает знаний чтоб написать "сомнительный" скрипт
И вы думаете, что есть желание платить 700 рублей в месяц за ваш "сомнительный" скрипт? :)


P.S.: Ладно, это моё имхо. Закончу беседу :)

gor-
15.12.2009, 22:14
Ладно, это моё имхо. Закончу беседу :)
Спасибо за ваше мнение.

myhand
15.12.2009, 22:51
Изначально утилита писалась под нужды шаредхостинга. Там где клиент может выполнять действия - в принципе труднопрогнозируемые, Но может использоваться и на других системах - где есть трудно прогнозируемые поведения системы.

для шаредхостинга - согласен. там конкуренция за ресурсы, оверселлинг... но ведь и ваша
программа очевидно не решает задачу. например, она не видит различий в 100%us
vs 100%wa, грубо говоря. т.е. характер утилизации процессора совершенно
неизвестен. или не так? или еще какая-то обвязка из скриптов должна быть?

Pilat
15.12.2009, 23:04
Любителям написать всё самостоятельно: представьте, что хозяину сервера, на который вы наставили своих самописных скриптов, приходится по каким-то причинам с вами расставаться. Что ему делать? Полностью переставлять систему под нового админа с новым набором скриптов?

700 рублей, конечно, платить не хочется...

Himiko
15.12.2009, 23:25
Любителям написать всё самостоятельно: представьте, что хозяину сервера, на который вы наставили своих самописных скриптов, приходится по каким-то причинам с вами расставаться. Что ему делать? Полностью переставлять систему под нового админа с новым набором скриптов?

700 рублей, конечно, платить не хочется...

А что делать, если скрипт я купил?
Тоже самое. Всё-равно новый админ всё будет делать так, как ему захочется.

myhand
15.12.2009, 23:41
А что делать, если скрипт я купил?

а у него есть документация (а если нет - втопку таких скриптов)

gor-
16.12.2009, 00:05
программа очевидно не решает задачу. например, она не видит различий в 100%us
vs 100%wa, грубо говоря. т.е. характер утилизации процессора совершенно
неизвестен. или не так? или еще какая-то обвязка из скриптов должна быть?

Вы правы - публичная часть не решает. Но и я не собираюсь останавливаться на достигнутом.
Новое ядро поддерживает /proc/PID/io, с которым я успел уже немного поработать и есть наработке в ДЕВ версии. Пока правда еше не стабильные. В Январе месяце я сделаю релиз версии с поддержкой правил на основе IO.

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

gor- добавил 16.12.2009 в 00:09
Любителям написать всё самостоятельно: представьте, что хозяину сервера, на который вы наставили своих самописных скриптов, приходится по каким-то причинам с вами расставаться. Что ему делать?
Возможно вы правы, и мне стоит сделать акцент на владельцев серверов, вынужденных менять админов время от времени.
Никаких стандартов в борьбе с нагрузкой на сейчас нет. Каждый админ это постигает по своему, и вполне возможно что limiter получит свою нишу тут.


а у него есть документация (а если нет - втопку таких скриптов)


Сам знаю что такое смотреть скрипт на предмет понимания как оно работает, потому делаю максимальный уклон на максимальную документацию.

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

Pilat
16.12.2009, 01:43
А что делать, если скрипт я купил?
Тоже самое. Всё-равно новый админ всё будет делать так, как ему захочется.

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

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

Pilat добавил 16.12.2009 в 01:45
А что делать, если скрипт я купил?
Тоже самое. Всё-равно новый админ всё будет делать так, как ему захочется.

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

gor-
16.12.2009, 02:02
Если программа будет популярной, её всё равно кто-то перепишет на перле - может, стоит сразу открыть тексты?

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

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

Если кто смотрел мой топик о Админстве серверов, видел наверно пост http://searchengines.guru/showpost.php?p=5409159&postcount=2
Написанный 3 месяца назад. В посте упоминается некое ПО, это какраз limiter.

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

Boris A Dolgov
16.12.2009, 08:22
Мониторинг из юзерспейса, на мой взгляд, это вообще глупо. От некритичной периодической нагрузки спасет аккаунтинг, который, помимо всего, устранит ее причину или переведет ее на новый тариф :)

А при критической нагрузке Ваш демон ничего не сможет сделать. Зато rlimit и прочее от нее спасет.

Himiko
16.12.2009, 08:45
Если, например, я куплю этот скрипт - это будет значить, что он дошёл до стадии промышленной эксплуатации. Новый админ будет его использовать, а если не захочет - пойдёт админить в другое место.
Скрипт ТС продаёт админам. Если его купит админ и будет его использовать на серверах клиента - это его дело. Другой админ может использовать свои средства.
А клианта вообще не должно касаться, чем пользуется админ. Главное, чтобы он поддерживал работоспособность сервера и возникающие проблемы решались в кротчайшие сроки.

Pilat
16.12.2009, 11:32
А клианта вообще не должно касаться, чем пользуется админ. Главное, чтобы он поддерживал работоспособность сервера и возникающие проблемы решались в кротчайшие сроки.

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

Himiko
16.12.2009, 11:51
Да нет, нормального клиента как раз это очень заботит. Наличие эксклюзивных программ, которыми может управлять только один человек в мире, означает что либо этого человека нельзя уволить, либо при смене админа надо переставлять весь сервер, а это простой, либо надёжность такого сервера определить невозможно - ибо надёжность уникальных программ никому не известна.

И много таких клиентов?
В любом случае каждый админ всё делает во-своему, не бывает 100% совпадений во мнениях админов. Если делать так, как сказали вы, то нового админа будете очень долго искать.
Да и многие клиенты даже не понимают, для и чего и зачем нужна конкретная программа. Им нужна стабильная работа сервера, которую и обеспечивает админ теми средствами, которыми он умеет пользоваться.

Вот сколько работаю, а таких клиентов не встречал, которых вы описываете :)

Pilat
16.12.2009, 12:14
Вот сколько работаю, а таких клиентов не встречал, которых вы описываете :)

Это встречается, когда надо сервер поддерживать годами, и не один.
Пример - моя фирма постепенно дозреет, что для моих проектов нужен администратор вместо меня. Я же не буду подстраиваться под выдумки каждого нового админа, а система уже почти 10 лет работают и ещё проработает не меньше. Как Вы представляете, десятки серверов перевести на новый софт это мгновенно?

Himiko
16.12.2009, 13:26
Это встречается, когда надо сервер поддерживать годами, и не один.
Пример - моя фирма постепенно дозреет, что для моих проектов нужен администратор вместо меня. Я же не буду подстраиваться под выдумки каждого нового админа, а система уже почти 10 лет работают и ещё проработает не меньше. Как Вы представляете, десятки серверов перевести на новый софт это мгновенно?
Есть сервера, которые я обслуживаю не первый год. И до меня был админ, и после меня, наверное, будет. И не возникало подобных вопросов.

И как вы думаете, разобраться админу с неизвестным ему софтом - это быстро?
Или вы будете искать админа, который на 100% согласен с вами и сам всё настраивает 1 в 1 точно так же + использует тот же софт?
Такого админа вы будете тоже не один месяц искать. Смена админа - это всегда не лёгкий и не быстрый процесс. Купите ли вы ПО или не купите, разницы тут не будет, имхо.

Andreyka
16.12.2009, 14:42
Приведите пример ограничения perl скрипта на linux машине, запускаемого из под APache через suexec. Который делает тоже что и ваше предложение - убивает винт большим ИО?

При этом учтите, что вы не знаете заранее, что пользователь %username% установит этот скрипт на сервер.

man rlimit

Pilat
16.12.2009, 15:33
Есть сервера, которые я обслуживаю не первый год. И до меня был админ, и после меня, наверное, будет. И не возникало подобных вопросов.

И как вы думаете, разобраться админу с неизвестным ему софтом - это быстро?
Или вы будете искать админа, который на 100% согласен с вами и сам всё настраивает 1 в 1 точно так же + использует тот же софт?
Такого админа вы будете тоже не один месяц искать. Смена админа - это всегда не лёгкий и не быстрый процесс. Купите ли вы ПО или не купите, разницы тут не будет, имхо.

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

Смена админа - лёгкий и безболезненный процесс, если админ нормальный и не носит с собой уникальный софт. А вот Ваш случай - это болезненный долгий процесс с неизвестными потерями.

Himiko
16.12.2009, 15:39
Быстро или нет разбираться админу - это его проблемы. Вы серьёзно считаете, что каждый новый админ получит разрешение ставить свой любимый софт? Ну тогда корпоративный рынок не для Вас. Вообще есть администрирование систем, и есть хакерство. Ваш путь - это хакерство.

Смена админа - лёгкий и безболезненный процесс, если админ нормальный и не носит с собой уникальный софт. А вот Ваш случай - это болезненный долгий процесс с неизвестными потерями.
Вы немного не о том говорите.
Есть общее ПО, которое используется на серверах. А есть "сомнительные" скрипты для мониторинга. Эти скрипты нужны только админу, т.к. они ему будут помагать и информировать его.

myhand
16.12.2009, 16:02
Andreyka, одним rlimit-ом на оверселленой хостинговой машине не напасешся. дело в том,
что проблемы (у пользователей) начинаются _задолго_ до того, как все станет раком.

т.е. обычно что-то типа (как заметил Борис) acct + скрипты, которые
откручивают "плохим" пользователям определенные услуги и/или меняют тарифный план.
либо (как делают практически на любом нормальном хостинге) - саппорт, который
ловит нагрузку и делает аналогичное вручную.

а для выделенного сервера limiter нафиг не сдался, это уже выяснили. другое дело, что
и задачи виртуального хостинга он не решает (только в "планах" определение характера утилизации CPU и т.п.).

думаю, нишу этого limit'ера занимает как-раз monit - может автору имеет смысл просто
предлагать платные услуги настройки monit + доработать его, если возникнут хорошие идеи?

Есть общее ПО, которое используется на серверах. А есть "сомнительные" скрипты для мониторинга. Эти скрипты нужны только админу, т.к. они ему будут помагать и информировать его.

видимо, вы никогда не работали в большой команде сисадминов. там это самое "сомнительное" ПО
является критической частью инфраструктуры. попробуйте снести настроенный nagios и
установить zabbix - это задачка на много человекочасов и оччень болезненная для поддержания
работы того самого "общего ПО".

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

gor-
16.12.2009, 16:22
Мониторинг из юзерспейса, на мой взгляд, это вообще глупо. От некритичной периодической нагрузки спасет аккаунтинг, который, помимо всего, устранит ее причину или переведет ее на новый тариф :)

А при критической нагрузке Ваш демон ничего не сможет сделать. Зато rlimit и прочее от нее спасет.

rlimit работает жестко но его использование оправдано в определенных ситуациях.

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

Что же касается аккаунтинга , то оно решает другую цель - кого выставить на деньги.

а LIMITER предназначен для борьбы с не прогнозируемой нагрузкой и для ограничения потребления cpu для прогнозируемой нагрузки.

Это не мониторинг - это средство активного реагирования. Тоесть что то произошло и тут же сразу на это что-то произошел ответ системы.
Для мониторинга лучше использовать Nagios, Zabbix и прочие подобные системы.

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

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

Himiko
16.12.2009, 16:49
видимо, вы никогда не работали в большой команде сисадминов. там это самое "сомнительное" ПО
является критической частью инфраструктуры. попробуйте снести настроенный nagios и
установить zabbix - это задачка на много человекочасов и оччень болезненная для поддержания
работы того самого "общего ПО".
В комманде работал почти год. Но мы работали с разными клиентами, т.е. это не комманда, которая обслуживала сервера одной компании.
Разговор сейчас немного не в то русло ушёл.
Я говорю о том, что это ПО выбирают устанавливают админ/админы, которые производят настройку сервера. Клиент обычно мало в этом понимает, чтобы отдавать предпочтения конкретному ПО.

Pilat
16.12.2009, 16:57
Я говорю о том, что это ПО выбирают устанавливают админ/админы, которые производят настройку сервера. Клиент обычно мало в этом понимает, чтобы отдавать предпочтения конкретному ПО.

Нет, всё это совсем не так. И ПО выбирает не админ, и клиент понимает, и иногда больше админа. И год - это не срок.

myhand
16.12.2009, 17:36
В комманде работал почти год. Но мы работали с разными клиентами, т.е. это не комманда, которая обслуживала сервера одной компании.

и что? небыло никакого стандартного мониторинга? никаких стандартов по
документированию, поддерживаемому ПО? у коли стоит freebsd 4.11 а у васи Debian/4.0
и все мониторятся по-разному? и на каждом свой набор самописных утилит "активного реагирования" ((с) gor-)? надеюсь, что нет.

еще раз. если вы уходя _удаляете все_ свои утилиты, о чем клиент
предупреждается заранее - возражений нет.

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

Andreyka
16.12.2009, 19:04
Andreyka, одним rlimit-ом на оверселленой хостинговой машине не напасешся.
Раскрою секрет - ненадо оверселить тачки :)

Andreyka добавил 16.12.2009 в 19:06

Но как я уже говорил, в случае чего по rlimit - процесс убивается, в случае с limiter - можно оставить жить процесс но не давать ему кушать весь проц.

Дурацкая идея. Процессы будут работать медленно, запускаться новые до завершения старых - и так пока не заберут всю память со свопом. И придет oom.

gor-
16.12.2009, 19:28
Дурацкая идея. Процессы будут работать медленно, запускаться новые до завершения старых - и так пока не заберут всю память со свопом. И придет oom.

Спасибо, ваше мнение учел. Это мне дало паро идей.

Boris A Dolgov
16.12.2009, 20:28
rlimit работает жестко но его использование оправдано в определенных ситуациях.

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

Что же касается аккаунтинга , то оно решает другую цель - кого выставить на деньги.

а LIMITER предназначен для борьбы с не прогнозируемой нагрузкой и для ограничения потребления cpu для прогнозируемой нагрузки.

Это не мониторинг - это средство активного реагирования. Тоесть что то произошло и тут же сразу на это что-то произошел ответ системы.
Для мониторинга лучше использовать Nagios, Zabbix и прочие подобные системы.


Касательно такого подхода Фил Кулин когда-то читал доклад на ХостОбзоре. Если кратко - чем больше мы тормозим использование ресурсов в узких местах, тем больше нагрузки мы получим. Ведь когда мы тормозим приоритет процесса, мы заставляем его выполняться дольше. Это значит, что io будет более размазано по времени (больше долгих seek'ов), что память будет использоваться в несколько раз дольше, чем нужно, будет тратится cpu на переключения и планировщик. В совокупности и плохом случае мы получим засвопвшийся сервер со сдохшими дисками :)

Подобный limiter, по идее, должен уметь не ренайсить процессы в зависимости от нагрузки, а устранять причину этой самой нагрузки - например, отслеживать ботов/посетителей, которые вызывают слишком много нагрузки, и блокировать их. Как вариант - отслеживать наиболее грузящий скрипт или URL и блокировать его. Как более плохой вариант - отслеживать грузящий виртхост и блокировать его. Как еще большее плохой вариант - блокировать всего юзера, правда я не знаю, сколько клиентов останется у такого хостера и имеет ли это смысл на собственном дедике.

Таким образом, я не разделяю высокие нагрузки на прогнозируемые и непрогназируемые. На мой взгляд, есть только "в пределах нормы" и "ненормально высокая".
Аккаунтинг не пытается развести клиента на деньги, а смотрит динамику роста нагрузки в пределах нормы, пытаясь не допустить ненормально высоких нагрузок и пытается гарантировать равенство всех пользователей :) Иными словами, он используется как раз как мониторинг. Я вот аккаунтинг уже год делаю, он уже претерпел три полных переделывания, но все равно не могу понять, что надо считать и как, чтобы видеть и прошлое, и возможное будущее :eek:
Ну а rlimit же помогает решать внезапные проблемы, когда под угрозой сама работа сервера, то есть - быстро реагирует на проблему. Лучше уж десяток необработанных запросов, чем тысяча тормозящих.

Кстати, у меня есть подозрения, что по LA считать текущую нагрузку не очень адекватно - ему на пересчет требуется время, которого иногда нет, и он не всегда показывает адекватную нагрузку - все зависит от задач. Есть сервера (при одинаковых физических конфигурациях), которые при LA 50 чувствуют себя нормально, а другие - дохнут уже при >8.

gor-
16.12.2009, 20:53
Ваше рассуждение по существу согласен. Я постараюсь составить более детальное обьяснени что зачем и почему, чтоб не возникало таких долгих рассуждений на тему "Надо ли оно вообще".

Клиент должен видеть возможности, сравнивать с своими потребностями и решать "надо" или "не надо".

Что касается дополнительного функционала, то он конечно же будет. Но судя по диалогу здесь - пока что мне не удалось донести основную мысль до аудитории.

Ну или те кто понял, просто не подали виду.

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

myhand
16.12.2009, 21:35
Раскрою секрет - ненадо оверселить тачки :)

нда, и где вы видели виртуальный хостинг, где клиентам выделяют
гарантированные ресурсы? кому такое надо - берет себе VPS нормальный.

большинство клиентов виртуального хостинга создают пустяковую нагрузку + достаточно
хорошо размазанную по времени. исходя из этого и определяют "заселенность" хостинговых
серверов. а дальше начинается игра "ловля грузчиков" с применением системного аккаунтинга,
сбора статистики запросов для сервисов (типа mod_status) etc. с последующим отключением,
переездом клиента на другой хостинговый сервер etc...


Кстати, у меня есть подозрения, что по LA считать текущую нагрузку не очень адекватно - ему на пересчет требуется время, которого иногда нет, и он не всегда показывает адекватную нагрузку - все зависит от задач.

+1
нафиг в такой задаче отдельный демон не нужен (crontab - за глаза). ибо критерии
типа la1 (la5 и la15 и подавно) - смысл имеют на интервалах порядка минуты и более.

Andreyka
16.12.2009, 22:23
нда, и где вы видели виртуальный хостинг, где клиентам выделяют
гарантированные ресурсы?

Гарантированные ресурсы и оверселинг - две разные вещи

myhand
17.12.2009, 14:05
Гарантированные ресурсы и оверселинг - две разные вещи

не просто разные, а в сущности - противоположные. а по существу есть что сказать?

kxk
31.12.2009, 11:54
myhand, На самом деле гарантированные ресурсы это впски на дешёвых серверах от хостинг уа или хетзнера с кейвебом :) При их ценах и цене за которую средний впс купят это реально :) Там возникнет вопрос с абузами downtime и тд, но это уже тема отдельного топика :)