Как указать браузеру Chromium запускать URL как единственный экземпляр, а не несколько экземпляров?

Вопрос или проблема

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

Используя браузер Chromium на ПК, я запускаю его следующим образом:

~$ chromium-browser -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &

~$ ps aux | grep "chromium-browser"
sun      31816  0.7  1.5 613092 61384 pts/4    Sl   15:44   0:03 /usr/lib/chromium-browser/chromium-browser -kiosk http://pbx/adminkiosk/index?language=EN&username=2002&password=1234
sun      31818  0.0  0.1 264484  7248 pts/4    S    15:44   0:00 /usr/lib/chromium-browser/chromium-browser -kiosk http://pbx/adminkiosk/index?language=EN&username=2002&password=1234
sun      31819  0.0  0.0   6464   408 pts/4    S    15:44   0:00 /usr/lib/chromium-browser/chromium-browser-sandbox /usr/lib/chromium-browser/chromium-browser --type=zygote
sun      31820  0.0  0.4 281364 18012 pts/4    S    15:44   0:00 /usr/lib/chromium-browser/chromium-browser --type=zygote
sun      31824  0.0  0.1 281364  5404 pts/4    S    15:44   0:00 /usr/lib/chromium-browser/chromium-browser --type=zygote
sun      31849  1.1  2.3 1052972 91968 pts/4   Sl   15:44   0:05 /usr/lib/chromium-browser/chromium-browser --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/InfiniteCache/No/OmniboxHQPReplaceHUPRearrangeNumComponents/Standard/OmniboxSearchSuggestTrialStarted2013Q1/5/OneClickSignIn/BlueOnWhite/Prefetch/ContentPrefetchPrefetchOff/Prerender/Prerender15minTTL/UMA-New-Install-Uniformity-Trial/Experiment/UMA-Session-Randomized-Uniformity-Trial-5-Percent/group_15/UMA-Uniformity-Trial-1-Percent/group_45/UMA-Uniformity-Trial-10-Percent/group_06/UMA-Uniformity-Trial-20-Percent/group_02/UMA-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-50-Percent/group_01/ --disable-gl-multisampling --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=31816.0.281183995
sun      31981  0.0  0.0  13584   924 pts/4    S+   15:51   0:00 grep --color=auto chromium-browser

Теперь, поскольку открываются 2 экземпляра 2 URL, данные, которые сканируются, передаются другому экземпляру без балансировки. В результате моё приложение не работает с Chromium, но работает с Firefox/Opera.

Как я могу сказать Chromium остановить это и запустить URL только с одним экземпляром, а не дважды?

ПРАВКА:

Я пробовал следующие флаги без успеха:

--process-per-site  
--single-process

Существует множество объяснений, почему это может происходить.

Я вспомнил, что Chromium также автоматически запускает процесс GPU (хотя не на моем ноутбуке), и так как вы используете Alienware, я предполагаю, что процесс GPU “спит” с 0% использованием, ожидая, чтобы отобразить какую-то графику.

Я предлагаю вам попробовать следующие флаги:

--disable-gpu-process-prelaunch
--disable-software-rasterizer

для отключения GPU (и дополнительных функций)

или этот флаг:

--in-process-gpu

чтобы запустить его как поток

вы также можете попробовать

process-per-tab

но похоже, что вы уже пробовали что-то подобное, что не помогло.

пожалуйста, сообщите о ваших результатах 🙂

Ответ или решение

Для обеспечения работы веб-приложения без конфликтов между несколькими экземплярами Chromium, необходимо обратить внимание на способ запуска браузера и использование определённых параметров командной строки. Проблема, с которой вы столкнулись, связана с тем, что браузер может запускать несколько процессов, что приводит к параллельной обработке запросов, и, как следствие, к некорректной работе приложения.

Решение проблемы: Запуск Chromium в одном экземпляре

Чтобы убедиться, что Chromium работает как единый экземпляр и не открывает дополнительные окна или процессы, следует воспользоваться несколькими ключевыми флагами:

  1. Использование флага --user-data-dir:
    Этот флаг указывает на директорию данных пользователя. Если запустить несколько экземпляров Chromium, они могут использовать разные каталоги для хранения данных, что также может привести к их параллельной работе. Убедитесь, что используете один и тот же каталог.

    chromium-browser --user-data-dir="/path/to/single/profile" -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234"
  2. Флаг --no-sandbox (для разработки):
    Убедитесь, что вы осознаете риски, связанные с использованием этого флага, так как он отключает изоляцию процессов. Используйте его только в случае понимания последствий.

    chromium-browser --no-sandbox -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234"
  3. Флаги для управления процессами:
    Попробуйте следующие флаги, которые помогут ограничить количество процессов, создаваемых браузером:

    chromium-browser --single-process -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234"

    Флаг --single-process может помочь, хотя его использование в некоторых версиях Chromium может быть ограничено.

  4. Управление GPU-процессами:
    Учитывая специфику вашего устройства, можно попробовать отключить графические процессы или настроить их работу:

    chromium-browser --disable-gpu-process-prelaunch --disable-software-rasterizer -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234"
  5. Проверка наличия дополнительных параметров:
    Если указанные выше варианты не сработали, убедитесь, что нет конфликтующих процессов. Например, проверьте, нет ли других запущенных экземпляров Chromium перед запуском нового.

Итог

Работающая конфигурация может выглядеть так:

chromium-browser --user-data-dir="/path/to/single/profile" --disable-gpu-process-prelaunch --no-sandbox --single-process -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234"

Советую протестировать вышеописанные параметры и, если возникнут дополнительные проблемы, проверьте обновления браузера или обратитесь к документации Chromium для поиска возможных новых флагов и опций, которые могут помочь в данной ситуации. Если ваши усилия не дадут результата, всегда можно рассмотреть альтернативные браузеры, такие как Firefox или Opera, которые, как вы уже заметили, корректно работают с вашими задачами.

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

Капча загружается...