Когда Google Chrome порождает новый процесс? - PullRequest
0 голосов
/ 26 мая 2019

Когда я вижу диспетчер задач Google Chrome, я вижу несколько (каждой) вкладок, запущенных под отдельным процессом, и группу вкладок, запущенных под одним процессом.Из любопытства я искал, чтобы узнать, почему он работает как несколько процессов, а не как несколько потоков.И одна вещь, на которую я обратил внимание: когда он запускается как один процесс и порождает несколько потоков, может быть несколько ограничений / недостатков, таких как

1) Ограничение количества потоков, которые могут быть созданы

2) Когда одна вкладка перестает отвечать на запросы, все приложение становится бесполезным, и нам приходится выходить из Chrome и перезапускать его из-за неправильной работы сайта.

Некоторые упоминали, что Chrome использует один процесс на домен, но здесь это не так.

enter image description here

Мне все еще неясно,

1) Когда Chrome решает создать новый процесс?

2) Каковы другие преимущества использования отдельных вкладок в отдельном процессе?

3) Как файлы cookie распределяются между вкладками, когда каждая из них запускается в отдельном процессе?Это происходит через межпроцессное взаимодействие?Если да, будет ли это слишком дорого?И повлияет ли это на производительность других вкладок (т.е. веб-страницы)?

1 Ответ

0 голосов
/ 26 мая 2019

Задав этот вопрос, я пришел посмотреть эту статью ( Многопроцессная архитектура Chromium ), и он ответил на мой вопрос (1).

Когда Chrome решает появитьсяновый процесс?

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

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

Они накладывают ограничение на количество создаваемых ими процессов визуализации.(как 20 в большинстве случаев).Как только они достигнут этого предела, они начнут повторно использовать существующие процессы рендеринга для новых вкладок.

В чем преимущество запуска вкладок под другим процессом?

Google Chrome использует эти свойства и помещает веб-приложения и плагины в отдельные процессы из браузера.сам.Это означает, что сбой движка рендеринга в одном веб-приложении не повлияет на браузер или другие веб-приложения.Это означает, что ОС может запускать веб-приложения параллельно, чтобы повысить их скорость отклика, и это означает, что сам браузер не блокируется, если конкретное веб-приложение или плагин перестает отвечать на запросы.Это также означает, что они могут запускать процессы механизма рендеринга в ограничительной песочнице, которая помогает ограничить ущерб, если эксплойт все-таки произойдет.

Интересно, что использование нескольких процессов означает, что Google Chrome может иметь свой собственный диспетчер задач (показанный ниже),который вы можете получить, щелкнув правой кнопкой мыши на строке заголовка браузера.Этот диспетчер задач позволяет отслеживать использование ресурсов для каждого веб-приложения и плагина, а не для всего браузера.Он также позволяет убивать любые веб-приложения или плагины, которые перестали отвечать, без необходимости перезапускать весь браузер.

...