понедельник, 26 апреля 2010 г.

Parallelize fail или Сторож-убийца

Сегодня решил поставить и проверить Firefox 3.7 alpha 5, который обещал разделение процессов браузера и плагинов. Process Explorer дает четко увидеть разницу между 3.6.2 и 3.7 (последняя стабильная версия на момент написания статьи - 3.6.3, в которую также перенесли этот механизм из 3.7, но неизвестно, насколько хорошо вписали в структуру, поэтому она в статье не тестировалась).

Divide et impera

Вы всё ещё сёрфите обычным Firefox? Тогда мы идём к вам!

Было:
Единый процесс Firefox
Стало:
Новый дочерний процесс для плагинов

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

Mozilla обещает нам, что в случае падения любого плагина - например Flash - весь браузер не упадет, а только отобразится уведомление с грустным смайликом по стиилю весьма смахивающем на Хром.
Проверить плагин на отказ не было моей целью. Меня волновало другое - сможет ли браузер справиться с ситуацией, когда процесс Flash подвиснет в каком-нибудь цикле или еще хуже - по операции Input/Output?

Для этого у меня есть надежный способ - взаимодействие Flash и proxy-сервера на моем рабочем месте. А особенность его в том, что при попытке загрузить файлы используя Flash через наш прокси сервер, после запроса авторизации плагин честно пытается их пропихнуть. Последнее у него, к сожалению, не выходит (причины не выяснял, может это общая проблема для связки Flash+proxy). И вот когда раздраженный пользователь жмет ЛКМ на кнопке закрытия/обновления табки либо любой друго йссылке на странице, Flash плагин подвисает, заморозив при этом и сам Firefox.

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

И что бы вы таки думали? Неизвестно, имеет ли Firefox 3.7 alpha 5 семитские корни, но не смотря на ожидания, он вешается за компанию с Flash-плагином, чем лично мне делает больно.

Боливар не вынес двоих...


При этом, если процесс браузера завершить кнопочкой End Now то процесс плагинов благополучно живёт безотцовщиной и бесполезно жрёт память.

Процессы-зомби - старая проблема

Альтернатива

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

Заключение

Похоже в этой области Мозилловцам еще долго догонять Гугл. А если вспомнить, что и у Хрома с этой моделью не всё было в порядке в течение примерно года, то и в Firefox стоит ждать стабильной модели разделения на процессы через годик и скорее всего уже в версии 4.0

Firefox 4.0 (concept)
P.S. Самые внимательные спросят: при чём тут сторож-убийца?! Дело в заглавии поста...

1 комментарий:

  1. Тоже "соскочил" с Огнелиса. Chrome 5 заметно быстрее рендерит страницы.

    ОтветитьУдалить