Firefox 通过 ssh -X 变慢(再次)

Firefox 通过 ssh -X 变慢(再次)

正如对问题的评论中指出的那样gfx.xrender.enabled。答案可以在标记的欺骗中找到,但是在所有关于 ssh 和 X11 协议的噪音中很容易被忽略。

直接回答链接:https://unix.stackexchange.com/a/557920/66307

我的问题大约一个月前开始出现。我目前使用的是 Firefox 89.0.1。

到目前为止,Firefox 在ssh -X.我从 Ubuntu 机器(服务器)到 Ubuntu VM(客户端)运行它,并从不同的 Ubuntu 机器(服务器)到 Windows 10(客户端)运行它,两者都显示相同的症状。这不是我的硬件设置,或者-X因为所有机器都连接到本地千兆位交换机,并且其他应用程序(包括 Thunderbird)运行得很好。它们比我在自己的桌面上运行它们要慢一些,但完全可用。

事情发生后,Firefox 就变得……慢了。我正在使用它--no-remote,Firefox 的实际窗口会在一秒钟内出现。然后它会挂在那里大约 2 分钟,直到选项卡变得可用。我的 shell 中的输出ssh如下:

$ firefox --no-remote &
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

(firefox:757486): GLib-GIO-CRITICAL **: 10:39:54.241: g_dbus_proxy_new: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(firefox:757486): GLib-GIO-CRITICAL **: 10:39:54.241: g_dbus_proxy_new: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(firefox:757486): GLib-GIO-CRITICAL **: 10:39:54.241: g_dbus_proxy_new: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
[GFX1-]: Failed GL context creation for WebRender: 0
[GFX1-]: FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED
[GFX1-]: Failed to connect WebRenderBridgeChild.
[GFX1-]: Fallback WR to SW-WR
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

但这看起来与我之前的情况并没有太大不同。

任何人都可以提出任何可能加快速度的建议吗?我并不是真的在寻找告诉我速度ssh -X很慢的答案(确实如此,但在所有其他应用程序上我可以接受)或与压缩或密码套件有关的事情。我的链接很好,除了 Firefox。

答案1

这不是我的硬件设置或 -X,因为所有机器都连接到本地千兆位交换机,并且其他应用程序(包括 Thunderbird)运行得很好。

事实上,X over network 当然不支持应用程序直接从服务器计算机上的 GPU 驱动程序绘制到内存缓冲区之类的功能。

然而,这种加速方法可以让您在滚动网站或显示视频等方面获得可接受的帧速率。因此,浏览器对此非常依赖。其他一切都有点 20 世纪 90 年代的感觉!在九十年代,浏览器在 X11 上播放视频是不可能的。

千兆位以太网不是粗(HDMI 连接可达数十 Gbit/s),并且您主要受到往返时间的限制,因为每个“绘制此”命令都必须返回数据; X11 不是异步的。

所以,总而言之,X over SSH:从来都不是很好,也不足以用于浏览,可以预见。 Firefox 开发人员完全有可能无法很好地支持巨大的绘图延迟,而不会使其他东西变得异常缓慢。

解决方案:不要通过 SSH 使用 X!瘦客户端通常会渲染到远程计算机上的帧缓冲区中,并且您只能获得发送到本地(显示)计算机的(可良好压缩的)图像。这就是 VNC 或 NX 等事物背后的原因。 (NX是一项很好的技术,你应该尝试一下。)

老实说,远程运行 Firefox 没有什么意义:您可以在本地运行它,同样,只需通过 SSH 传输网络流量即可。您可以使用 rsync 甚至 sshfs 将您的 Firefox 配置文件共享为文件(注意不要从多台计算机竞争访问)。

相关内容