我的服务器在通过转发的 X11 链接启动 X11 应用程序时速度极慢(需要 3-5 分钟)。我尝试使用 2-3 台不同操作系统的机器连接它。应用程序启动后,一切似乎都正常。我使用受信任的 X11 转发 (ssh -Y) 进行连接,并使用基于证书的身份验证(这应该不重要)。
操作系统是 amd64 上的 Gentoo Linux。所有应用程序均未提供与 X 环境相关的任何消息(一个应用程序未显示任何内容,另一个应用程序仅显示标准欢迎消息,最后一个应用程序显示有关正在使用资源的错误消息(最终弹出的窗口也告诉了我该消息)。
根据 Bertera 的建议,我使用 -v 选项运行。打印时,它不会打印任何内容,直到出现窗口:
debug1: client_input_channel_open: ctype x11 rchan 3 win 87380 max 16384
debug1: client_request_x11: request from 127.0.0.1 43716
debug1: channel 1: new [x11]
debug1: confirm x11
另外,我已经测试了 ssh 端口转发,它也非常慢(我猜测这可能是 X11 转发的问题)。
答案1
服务器的延迟/RTT 是多少(简单的 ping 就足够了)?您要启动什么应用程序?
X11 是同步协议,具有序列化的绘制调用。如果延迟较高或者应用程序执行许多绘图调用,其加载时间将会增加。
如果可以,您应该在服务器上安装 freenx 并使用 nx 客户端(例如:remmina 或 nomachine.com 客户端):它们通过反序列化 X11 绘图调用来工作,从而大大提高性能。
答案2
问题是 ssh 使用 ipv6 在环回上执行操作,并且我已设置 ip6tables 以丢弃所有流量。只需执行以下操作,它现在就可以正常工作:
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT
ip6tables -A FORWARD -i lo -o lo -j ACCEPT
感谢#gentoo 上的 ezakimak 指出 ipv6 角度。