История изменений
Исправление bugfixer, (текущая версия) :
Конечно, специфика malloc в том, что если вдруг памяти резко стало не хватать, система вероятно близка к краху.
Система - вовсе не обязательно, а вот процессу однозначно плохо. Наверное придётся таки написать длинный пост, что для меня крайне нехарактерно. Устраивайтесь поудобнее. Итак…
У подхода «падать сразу» есть масса неоспоримых преимуществ:
- Простота (тут всё понятно)
- Детерминированность (тут тоже)
- Impact. Народ любит всякие медицинские вещи в пример приводить, а мне вот не очевидно что условная «остановка сердца на 15 секунд с дальнейшей нормальной его работой» хуже чем провал в «фиксированные 40 ударов в минуту на последующие 24 часа».
- Visibility. Падающий процесс трудно замести под ковёр. Ваши operations об этом будут знать, а соответственно и вы об этом будете знать и сможете отреагировать.
- Уход от ментальности «это они виноваты, а у меня лапки». Если вы допустили что у процесса закончилась память - вы, именно ВЫ а не кто-то ещё, что-то делаете не так. И с этим нужно разбираться. И хорошо если это какой-то несуразно длинный rogue allocation из-за недостаточной валидации входных данных и/или запросов (это вы легко пофиксите), может вы в принципе кешируете слишком много, может у вас в памяти куча ненужного мусора болтается, может на машинке памяти неадекватно мало для её задач. Этот список бесконечен на самом деле. Но главный поинт в том что разбираться придётся, и именно вам.
Остановлюсь-ка, пожалуй, я пока на этом…
Исходная версия bugfixer, :
Конечно, специфика malloc в том, что если вдруг памяти резко стало не хватать, система вероятно близка к краху.
Система - вовсе не обязательно, а вот процессу однозначно плохо. Наверное придётся таки написать длинный пост, что для меня крайне нехарактерно. Устраивайтесь поудобнее. Итак…
У подхода «падать сразу» есть масса неоспоримых преимуществ:
- Простота (тут всё понятно)
- Детерминированность (тут тоже)
- Impact. Народ любит всякие медицинские вещи в пример приводить, а мне вот не очевидно что условная «остановка сердца на 15 секунд с дальнейшей нормальной его работой» хуже чем провал в «фиксированные 40 ударов в минуту на последующие 24 часа».
- Visibility. Падающий процесс трудно замести под ковёр. Ваши operations об этом будут знать, а соответственно и вы об этом будете знать и сможете отреагировать.
- Уход от ментальности «это они виноваты, а у меня лапки». Если вы допустили что у процесса кончилась память - вы, именно ВЫ а не кто-то ещё, что-то делаете не так. И с этим нужно разбираться. И хорошо если это какой-то несуразно длинный rogue allocation из-за недостаточной валидации входных данных и/или запросов (это вы легко пофиксите), может вы в принципе кешируете слишком много, может у вас в памяти куча ненужного мусора болтается, может на машинке памяти неадекватно мало для её задач. Этот список бесконечен на самом деле. Но главный поинт в том что разбираться придётся, и именно вам.
Остановлюсь-ка, пожалуй, я пока на этом…