基于 GNOME 的程序总是需要大约 30 秒才能通过 SSH 启动。即使是最简单的,比如gnome-calculator. 所述程序启动后,它们运行绝对正常。我正在使用ssh <user>@<host> -YC命令启动 SSH 会话。在此等待期间,我尝试检查 CPU 使用情况,但没有任何异常。网络带宽使用似乎也不过量(在 0.2 到 2 KiB/s 的范围内)。
我经常通过 SSH 使用我的 Ubuntu 19.10 机器,这对我来说是一个很大的问题。我在早期的 Ubuntu 版本中也看到过这个问题。
编辑:我发现在调用 to 时会发生这种延迟g_application_run()。跑步strace解释了延迟时间。在该延迟之前的最后一个系统调用是poll([{fd=11, events=POLLIN}], 1, 25000). 25000 以毫秒为单位超时。所有受影响的程序都在这个特定的系统调用中停止。文件描述符 11 是使用eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK). 所有这些都意味着程序正在等待某种永远不会发生的事件。但它可能是什么以及什么会导致它?
我相信这是由于 DISPLAY 环境变量没有传播到名为“xdg-desktop-portal-gtk”的本地服务。如果启动失败,每个 gnome 应用程序都会在启动过程中尝试启动它,等待它启动,然后在失败时约 25 秒后超时。
您可以在登录后手动修复此问题。首先,更新 dbus 进程的环境:
$ dbus-更新-激活-环境 --systemd DBUS_SESSION_BUS_ADDRESS 显示 XAUTHORITY
然后启动服务:
$ systemctl --用户启动 xdg-desktop-portal-gtk
现在启动应该又快了。
如果有人知道每次使用登录远程系统时自动执行此操作的最佳/最优雅的方法,我想了解一下。
30 秒听起来很像 DNS 超时。
将问题更新为:
time ssh localhost echo
time ssh -YC user@remote echo
time ssh -YC localhost gnome-calculator
Run Code Online (Sandbox Code Playgroud)
我的猜测是remote无法反向查找您的 IP 地址。所以尝试添加这个server:/etc/hosts
i.p.n.o myclient
Run Code Online (Sandbox Code Playgroud)
其中 ipno 是您的客户端 IP 地址。
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |