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

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

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

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

$ chromium-browser -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &
sun@sun-Alienware-X51:~$ 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 и получения конфликтующих данных от вашего веб-приложения можно воспользоваться различными параметрами командной строки. Ниже приведен подробный обзор методов, которые могут помочь вам запустить URL в единственном экземпляре, что позволит избежать ситуации с дублированием данных.

Основные шаги по предотвращению запуска нескольких экземпляров Chromium

  1. Параметр --user-data-dir:
    Запустите браузер с указанием уникальной директории данных пользователя. Это предотвратит открытие нескольких окон, использующих одну и ту же сессию.

    chromium-browser --user-data-dir="/path/to/single/instance/data" -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. Флаг --disable-gpu-process-prelaunch:
    Этот флаг отключает автоматический запуск GPU-процесса, который может создавать дополнительные экземпляры Chrome.

    chromium-browser --disable-gpu-process-prelaunch -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &
  4. Флаг --disable-software-rasterizer:
    Этот флаг отключает программный растеризатор, что также может помочь в управлении экземплярами.

    chromium-browser --disable-software-rasterizer -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &
  5. Флаг --hwgpu-disable:
    Если проблема связана с графическими процессами, вы можете попробовать полностью отключить их.

    chromium-browser --disable-gpu --no-sandbox --kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &

Проверка работающих процессов

После выполнения вышеперечисленных команд запустите следующую команду для проверки, сколько экземпляров Chromium действительно работает:

ps aux | grep "chromium-browser"

Это позволит убедиться, что только один экземпляр работает и не было попыток открыть дополнительные процессы.

Заключение

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

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

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

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