Архитектура ПО (2)
Недавно я рассказывал про серьезную архитектурную ошибку в Wowza, которая позволяет с легкостью отключить практически любой свободно выставленный экземпляр этого сервера в интернете.
Так же хочу привести интересное заблуждение неглупого чувака Крестена Краба, который удивляется: зачем в эрланге gen_server:call имеет по умолчанию таймаут в 5 секунд. Перефразирую этот вопрос для тех кто не в теме: почему в отличие от всех остальных языков программирования, эрланг по умолчанию дает объекту только 5 секунд на то, что бы выполнить метод?
Я в своё время долго мучал людей в рассылке, почему эрланг падает когда заканчивается память?
Все эти вещи я бы хотел связать вместе, что бы ещё раз рассказать о том, какие же всё таки опытные и матерые мужики в OTP team erlang-а. Когда Wowza зависает, она не может выйти из цикла и валит в лог сообщения о том, что out of memory и судя по стектрейсу, она не может выделить память под объект, который должен очистить ненужные сессии. Которые сдохли бы сами, если бы могли получить таймаут от неубиваемой VM. Или сдохли бы все вместе и перезапустились бы монитом, который бы увидел, что процесс умер.
Если бы было написано на эрланге, то система не осталась бы в залипшем состоянии, а она либо сдохла бы окончательно, либо сама собой бы перезапустилась. Но увы, джава не имеет в своём дизайне таких сильных идей, которые нужны для подобных систем. На ней можно сделать всё хорошо, но вот что-то не делают.
Так же хочу привести интересное заблуждение неглупого чувака Крестена Краба, который удивляется: зачем в эрланге gen_server:call имеет по умолчанию таймаут в 5 секунд. Перефразирую этот вопрос для тех кто не в теме: почему в отличие от всех остальных языков программирования, эрланг по умолчанию дает объекту только 5 секунд на то, что бы выполнить метод?
Я в своё время долго мучал людей в рассылке, почему эрланг падает когда заканчивается память?
Все эти вещи я бы хотел связать вместе, что бы ещё раз рассказать о том, какие же всё таки опытные и матерые мужики в OTP team erlang-а. Когда Wowza зависает, она не может выйти из цикла и валит в лог сообщения о том, что out of memory и судя по стектрейсу, она не может выделить память под объект, который должен очистить ненужные сессии. Которые сдохли бы сами, если бы могли получить таймаут от неубиваемой VM. Или сдохли бы все вместе и перезапустились бы монитом, который бы увидел, что процесс умер.
Если бы было написано на эрланге, то система не осталась бы в залипшем состоянии, а она либо сдохла бы окончательно, либо сама собой бы перезапустилась. Но увы, джава не имеет в своём дизайне таких сильных идей, которые нужны для подобных систем. На ней можно сделать всё хорошо, но вот что-то не делают.