Вопрос или проблема
У меня есть веб-приложение, которое собирает данные, и любой браузер загружает их первым, а второй не получает эту информацию о сборе.
Используя браузер 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
-
Параметр
--user-data-dir
:
Запустите браузер с указанием уникальной директории данных пользователя. Это предотвратит открытие нескольких окон, использующих одну и ту же сессию.chromium-browser --user-data-dir="/path/to/single/instance/data" -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &
-
Использование
--no-sandbox
:
Если ваше приложение не требует строгой безопасности, вы можете попробовать отключить режим песочницы. Однако будьте осторожны с этим параметром, так как он ослабляет уровень защиты браузера.chromium-browser --no-sandbox -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &
-
Флаг
--disable-gpu-process-prelaunch
:
Этот флаг отключает автоматический запуск GPU-процесса, который может создавать дополнительные экземпляры Chrome.chromium-browser --disable-gpu-process-prelaunch -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &
-
Флаг
--disable-software-rasterizer
:
Этот флаг отключает программный растеризатор, что также может помочь в управлении экземплярами.chromium-browser --disable-software-rasterizer -kiosk "http://pbx/adminkiosk/index?language=EN&username=2002&password=1234" &
-
Флаг
--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 с целью предотвратить открытие нескольких экземпляров, использование параметров командной строки может значительно помочь. Экспериментируйте с предложенными флагами, чтобы найти оптимальное значение для вашего конкретного сценария. Надеюсь, эти рекомендации окажутся полезными и помогут вашему приложению работать стабильно.
Если вы продолжаете сталкиваться с проблемами, пожалуйста, сообщите о ваших результатах, чтобы мы могли помочь вам более детально.