Firefox медленный по ssh -X (снова)

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

Как указано в комментарии к вопросу, это было связано с gfx.xrender.enabled. Ответ можно найти в помеченной дублирующей записи, но его легко упустить на фоне всей этой информации о ssh и протоколе X11.

Прямая ссылка на ответ: https://unix.stackexchange.com/a/557920/66307

Моя проблема начала происходить примерно месяц назад. В данный момент я использую Firefox 89.0.1.

До этого момента Firefox работал вполне нормально через ssh -X. Я запускаю его с машины Ubuntu (сервер) на виртуальной машине Ubuntu (клиент) и с другой машины Ubuntu (сервер) на Windows 10 (клиент), обе показывают одинаковые симптомы. Это не моя аппаратная настройка или -X, так как все машины подключены к локальному гигабитному коммутатору, и другие приложения (включая Thunderbird) работают прекрасно. Они чуть медленнее, чем если бы я запускал их на своем рабочем столе, но вполне приемлемы.

После того как это произошло, Firefox просто …. медленный. Я использую его с --no-remote, а фактическое окно Firefox появляется менее чем за секунду. Затем оно зависает там на около 2 минут, прежде чем вкладки станут доступными. Вывод в моей оболочке ssh выглядит так:

$ firefox --no-remote &
libGL ошибка: Не найдены соответствующие fbConfigs или визуализации
libGL ошибка: не удалось загрузить драйвер: swrast

(firefox:757486): GLib-GIO-CRITICAL **: 10:39:54.241: g_dbus_proxy_new: утверждение 'G_IS_DBUS_CONNECTION (connection)' не выполнено

(firefox:757486): GLib-GIO-CRITICAL **: 10:39:54.241: g_dbus_proxy_new: утверждение 'G_IS_DBUS_CONNECTION (connection)' не выполнено

(firefox:757486): GLib-GIO-CRITICAL **: 10:39:54.241: g_dbus_proxy_new: утверждение 'G_IS_DBUS_CONNECTION (connection)' не выполнено
[GFX1-]: Не удалось создать контекст GL для WebRender: 0
[GFX1-]: FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED
[GFX1-]: Не удалось подключиться к WebRenderBridgeChild.
[GFX1-]: Резервирование WR на SW-WR
libGL ошибка: Не найдены соответствующие fbConfigs или визуализации
libGL ошибка: не удалось загрузить драйвер: swrast
libGL ошибка: Не найдены соответствующие fbConfigs или визуализации
libGL ошибка: не удалось загрузить драйвер: swrast

Но это не выглядит слишком иначе, чем то, что у меня было раньше.

Может кто-нибудь предложить что-то, что могло бы ускорить это? Я не ищу ответы, которые говорят мне, что ssh -X медленно (это так, но меня это устраивает для всех других приложений), или вещи, связанные с компрессией или шифровальными наборами. У меня с сетью все в порядке, кроме Firefox.

Это не моя аппаратная настройка или -X, так как все машины подключены к локальному гигабитному коммутатору, и другие приложения (включая Thunderbird) работают прекрасно.

Дело в том, что X по сети, конечно, не поддерживает такие вещи, как приложения, которые напрямую рисуют в буферы памяти через драйвер GPU на серверной машине.

Тем не менее, такие методы ускорения являются тем, как вы достигаете даже приемлемого кадрирования для таких вещей, как прокрутка веб-сайтов или отображение видео. Поэтому браузеры сильно полагаются на это. Всё остальное было бы как в девяностых! В девяностые годы запуск видео в браузере на X11 был невозможен.

Гигабитный Ethernet не такой толстый (HDMI-соединение дает десятки Гбит/с), и вы в основном ограничены временем кругового маршрута, потому что каждая команда “нарисовать это” должна возвращать данные; X11 не асинхронный.

Таким образом, в целом, X по SSH: никогда не был отличным, не будет достаточным для просмотра, предсказуемо. Вполне возможно, что гигантская задержка рисования была чем-то, что разработчики Firefox не могли хорошо поддерживать без чрезмерного замедления всего остального.

Решение: не используйте X по SSH! Тонкие клиенты обычно рендерят в кадровый буфер на удаленной машине, и вы получаете только (хорошо сжимаемое) изображение этого, отправленное на вашу локальную (отображающую) машину. Вот что стоит за такими технологиями, как VNC или NX. (NX — это хорошая технология, вы должны попробовать её.)

Честно говоря, запускать Firefox удаленно имеет мало смысла: вы можете запускать его локально, так же, и просто передавать сетевой трафик через SSH. Вы можете поделиться своим профилем Firefox в виде файлов, используя rsync или даже sshfs (осторожно, чтобы не конкурировать за доступ с нескольких машин).

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

Проблема: медленная работа Firefox через ssh -X

Медленная работа Firefox при использовании ssh -X — распространённая проблема, особенно для пользователей, работающих с удалёнными системами через X11. Данная ситуация может проявляться в виде долгого времени загрузки и отсутствия отклика после открытия приложения. Давайте разберёмся, что может вызывать такие проблемы и как их можно решить.

Причины снижения производительности

  1. Протокол X11: X11 использует сетевое соединение для передачи команд, что делает его подверженным задержкам. Каждая команда рендеринга требует ответа, что может замедлять работу графически интенсивных приложений, таких как браузеры.

  2. Отсутствие аппаратного ускорения: Если на удалённом сервере не настроено правильное аппаратное ускорение (что видно из сообщений об ошибках, таких как libGL error: No matching fbConfigs or visuals found), это приводит к тому, что браузер использует программный рендеринг, который значительно медленнее.

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

Рекомендации по улучшению производительности

  1. Настройка gfx.xrender.enabled: Это настройка в about:config браузера Firefox отвечает за использование XRender для ускорения графики. Убедитесь, что она включена (true). В случае, если она уже включена и проблема сохраняется, попробуйте временно отключить её (false).

  2. Замена X11 на альтернативные решения:

    • VNC или NX: Эти протоколы работают по принципу передачи изображения, что позволяет минимизировать задержки и значительно повысить производительность. Например, NX может предоставлять более плавное взаимодействие с удалённым рабочим столом.
    • Проброс локального порта: Вместо того, чтобы запускать браузер через X11, можно запустить его локально и использовать SSH-туннелирование для подключения к удалённым ресурсам.
  3. Проверка и установка необходимых библиотек: Убедитесь, что у вас установлены правильные графические драйверы на сервере. Отсутствие нужных библиотек может также вызывать проблемы с производительностью.

  4. Оптимизация конфигурации сети: Хотя вы отметили, что ваше оборудование и сеть находятся в порядке, убедитесь, что нет дополнительных ограничений со стороны firewall или сетевых устройств.

  5. Использование дополнительных параметров для SSH: Проверьте параметры вашего SSH-соединения. Например, использование сжатия (-C) может помочь, но, как вы сами указали, это может не сильно повлиять на производительность в данном случае.

Заключение

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

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

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