GD Star Rating
loading...

Привет!

В кроне живёт весёлый скрипт, который периодически любит отжирать тонну оперативки, отчего сам умирает и тянет за собой кучу полезняшек. Особенно жалко таких ребят как sshd, rsyslog, named, не говоря уже о веб-сервисах, на которых сайты живут.

Вот и появилась пара вопросов:
1. можно ли конкретному скрипту при запуске из шелла указать жёсткий лимит памяти?
2. какого малоприятного рожна умирают другие сервисы и можно ли с этим бороться?

Если важно: CentOS на VDSке с жёстким лимитом оперативки и без свопа.

Tagged with →  

76 Responses to Скрипт и память

  1. OllZZ:

    И бонусный вопрос:
    есть ли какая магическая команда, которая запустит всё упавшее из этого списка
    chkconfig –list | grep 3:on

    или надо самому шелл-скрипт написать?

  2. V-nMilk:

    что за скрипт-то, колись. небось наговнокодил чего -. –
    > 1. можно ли конкретному скрипту при запуске из шелла указать жёсткий лимит памяти?

    на линупсе нет, на солярке можно процессы группировать в проекты и лимитировать им ресурсы

    > 2. какого малоприятного рожна умирают другие сервисы и можно ли с этим бороться?

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

    > есть ли какая магическая команда, которая запустит всё упавшее из этого списка
    на солярке этим занимается service management facility. на прыщиксе нужно писать скрипт, но не факт, что он сам не упадёт.

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

  3. OllZZ:

    Stephan-V:
    говнокодил не я, а какие-то ребята на питоне вроде неплохую бекапилку сделали (duplicity).
    Пару релизов назад они уже правили похожую проблему, когда даже мелкие инкрементальные бекапы много кушали.
    Но вот полный бекап с нуля хандрит. Я бы и рад потестить, в какой именно момент начинаются проблемы, но скрипт меня обезоруживает полностью таким безжалостным поведением.

    В общем, всё печально получается, если оно так, как ты говоришь. До соляры, понятное дело, мне далеко.

    > на прыщиксе нужно писать скрипт, но не факт, что он сам не упадёт.
    мне не демон следящий нужен (что в идеале, конечно), а простая команда, когда все сервисы вот так резко упали и нужно по-быстрому их обратно оживить. Ладно, попробую накатить скриптик.

  4. NarSm:

    Stephan-V: на линупсе нет, на солярке можно процессы группировать в проекты и лимитировать им ресурсы

    Смеялся в голос.

  5. NarSm:

    Запускай скриптик от спецпользователя, которому накручивай hard limit через /etc/limits.conf

  6. V-nMilk:

    : да, сплоховал (

  7. NarSm:

    : А, нагнал – /etc/security/limits.conf

  8. KNTCap:

    : В данный момент он прав, но вообще да, бугагашеньки.

  9. KNTCap:

    Используй просто рсинк, а не питоновскую обертку к нему, делов-то. Ну или наебошь себе свапа до усеру.

  10. KNTCap:

    : > мне не демон следящий нужен (что в идеале, конечно)
    monit или питоноподелие supervisor

  11. OllZZ:

    : не прокатит, это бекапилка всего сервака, поэтому пускается от рута.
    Или можно сделать клона рута (чтобы всюду был доступ)?

  12. KNTCap:

    : В ovz-контейнере, ага

  13. NarSm:

    : На ВДСке точно так же режется. Но артефакты от oom-киллера будут прекрасны.

    ps/2: У меня, кстати, на application-серверах в продакшне свопа нет 🙂

  14. OllZZ:

    : эта тулза умеет в gpg всё заворачивать, что мне, как укушенному личинкой параноика, очень нравится:)

    А вот насчёт свопа поподробнее. Это VDS и там сейчас
    Swap: 0k total, 0k used, 0k free

  15. KNTCap:

    : > бекапилка всего сервака
    Ну и зачем там рут нужен?

  16. NarSm:

    : Нет, не знаком 🙂

  17. OllZZ:

    : пасиб, посмотрю, что это такое

  18. NarSm:

    : М-м-м-м… Я даже как-то не знаю, что сказать.

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

    Мне кажется, что тебе нужно переделывать всю структуру бэкапа.

  19. OllZZ:

    : ну как… чтобы был доступ ко всем файлам (/etc etc.)

  20. OllZZ:

    : смотри, я хочу отделаться малой кровью.
    Сейчас работает “прекрасная” тузла, которая всё делает ровно как мне надо. Понятно, что в скрипте для запуска прописан пароль удалённого сервера, пароль на сам gpg-архив.
    А в бекапе хравится всё важное, в том числе и все системные конфиги, поэтому запускаю от рута.

  21. KNTCap:

    : Судя по входным данным это ovz контейнер, а oom там ебанутый наглухо

  22. V-nMilk:

    : там есть встроенная возможность использовать ssh для транспорта, чего вполне достаточно. или же можешь пускать нативный коннект через stunnel или zebedee

  23. KNTCap:

    : Свап добавляй @ Бекап запускай

    [email protected]:~# free -m | grep -i swap
    Swap: 0 0 0

    [email protected]:~# dd if=/dev/zero of=/storage/swap bs=1G count=4
    4+0 записей считано
    4+0 записей написано
    скопировано 4294967296 байт (4,3 GB), 80,214 c, 53,5 MB/c

    [email protected]:~# mkswap /storage/swap
    Setting up swapspace version 1, size = 4194300 KiB
    no label, UUID=0a5f05d3-bf35-48f9-aa44-d6449ab0054e

    [email protected]:~# swapon /storage/swap

    [email protected]:~# free -m | grep -i swap
    Swap: 4095 0 4095

    [email protected]:~#

  24. OllZZ:

    : скоро попробую, спасибо.

  25. OllZZ:

    Stephan-V: не, дело не в протоколе, по которому байтики бегут, а в самом бекапе – файлы шифруются.

  26. V-nMilk:

    : а с какой целью?

  27. OllZZ:

    : но возможность ограничить скрипт по памяти всё равно было бы лучше:)

  28. OllZZ:

    Stephan-V: я ж говорю, что укушен личинкой:)
    Сервак, куда бекаплюсь, не мой. Там злые соседи, которым не доверяю.

  29. OllZZ:

    : не делают ровным счётом ничего, это я первым делом попробовал. Особенности VDS?

  30. V-nMilk:

    : ну хуй знает.. если он gpg запускает на каждый файл… в симметричном режиме хоть?

  31. KNTCap:

    : Или не от рута запускать и переделывать все нахер, либо свапиться. У питона нет встроенных средств ограничения памяти, а вот у похапе – есть

  32. KNTCap:

    Stephan-V: > если он gpg запускает на каждый файл
    То писали его криворукие уебаны, которых надо гнать из профессии ссаными тряпками.

  33. V-nMilk:

    : мне кажется, если это контейнер, то ему не дадут своп врубить

  34. OllZZ:

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

  35. OllZZ:

    : может тогда посоветуешь хорошую инкрементальную бекапилку с возможность шифрования?
    Писать очередной велосипед (которыми весь хабр завален) на нативном rsync очень не хочется.

  36. KNTCap:

    Stephan-V: Я не помню что там и как в ovz, заодно и проверим

  37. OllZZ:

    Stephan-V: вот мне тоже:) Попозже буду проверять.

  38. OllZZ:

    Stephan-V: но одно точно могу сказать – каждая порция бепака лежит цельцым gpg-файлом

  39. V-nMilk:

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

  40. OllZZ:

    Stephan-V: раскатывать этой штукой, да. Периодически проверяю целостность бекапов (сама тулза умеет).
    Поэтому развернуть проблемы нет, зная пароль.

  41. OllZZ:

    : обламывается на этом
    $ swapon /storage/swap
    swapon: /storage/swap: Operation not permitted

  42. V-nMilk:

    : от рута хоть делаешь? а вообще, just as planned

  43. OllZZ:

    Stephan-V: конечно.
    Ну а вообще странно, это же мой диск, мой файл, что хочу то и делаю. Рам-диск то мне не мешают создавать, почему своп нельзя?

  44. V-nMilk:

    : потому что в опенвз один экземпляр ядра на все виртуалки. там и модули включать нельзя и даже системный вызов setcap ограничен для процессов в виртуальных окружениях

  45. OllZZ:

    Stephan-V: а если на XEN переползти?

  46. XxxGood:

    : о, чуваки открывают для себя принципы работы openvz

  47. KNTCap:

    OpenVZ does support swap space, and that swap space can be set with barriers and limits. But the swap space is “as a whole” meaning that there is one swap space for the entire system, not a user-configurable swap space per-VPS (that some other virtualizers, like UML allow).
    Пичалька тебе

  48. XxxGood:

    : тебе изоляция или виртуализация нужна?
    ты определись, а то бесит

  49. OllZZ:

    : что бесит-то? Мне “свой” сервер нужен, но пока не дедик.

  50. XxxGood:

    : а что значит “переползти”? ты хозяин ноды или что?
    тарифный план сменить, чтоль?

  51. OllZZ:

    : найти хостера, который за вменяемые деньги дают XEN, а не популярный openvz.
    Только нафига? Ради свопа? Сдался он мне…

  52. KNTCap:

    : Это не принципы, это особенности

  53. V-nMilk:

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

  54. MuiLt:

    1. /proc/PID/oom_adj
    2. ubic ftw!

  55. Amton:

    : извиняйте, по утрам xneur не фурычит

    что бы был доступ ко всем файлам типа /etc – на запись?

  56. KNTCap:

    : Пост не читай @ сразу отвечай

  57. MuiLt:

    : ну так! Алсо, про ubic я тут упоминаний не видел. А задачу “не хочу писать тысячу вотчдогов” он решает. https://github.com/berekuk/Ubic

  58. KNTCap:

    : > Ubic is a flexible perl-based service manager.
    > perl-based

    И сразу нахуй

  59. OllZZ:

    : на чтение, но ведь там не всё 644.
    Да и сам /root мне тоже надо бекапить, там полезняшки иногда появляются.

  60. OllZZ:

    : когда-то давно мне его конфиг показался муторным. Надо ещё раз почитать внимательно.

  61. OllZZ:

    : про oom выше ребята писали, что он неалё в ovz.
    И всё равно, это не решает задачи: фиксированный лимит памяти на конкретный процесс (с дочерними).

  62. OllZZ:

    : а, ну и про ubic правильно написал – куролесить на перле не есть признак счастливого досуга.

  63. MuiLt:

    : тогда cgroups же.

  64. MuiLt:

    : : ну как. Знаешь перл на уровне школьника – напишешь конфигов за пять минут : )

  65. KNTCap:

    : > тогда cgroups же.
    НУ СКАЗАЛИ ЖЕ – OVZ КОНТЕЙНЕР!

    Hardblog.net - linux nix windows image

  66. Amton:

    : это плохо. В /root должны быть личные файлы рута, а не полезняшки.

  67. EmoLt:

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

  68. OllZZ:

    : ну там и есть “личные” файлы, но т.к. иногда по рутом что-то кручу/выкачиваю/и т.п., то бывают полезняшки.
    Речь идёт о полном бекапе сервера и не суть важно, что где лежит.

  69. OllZZ:

    : так и сделаю, если другую тузлу не найду взамен.
    Попробовал сделать второй заход с bacula – монструозная штука. Всё круто, но не для моей задачи.

  70. Amton:

    : как раз важно – чтобы можно было не запускать от рута и ограничивать, как хочешь.

Добавить комментарий