Linux
通過 ssh 應用程序的 X11 轉發啟動非常緩慢
我有一台伺服器在通過轉發的 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 轉發的問題)。
問題是 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 的角度。
伺服器的延遲/RTT 是多少(一個簡單的 ping 就足夠了)?您要啟動什麼應用程序?
X11 是一個同步協議,帶有序列化的繪圖呼叫。如果延遲很高或者應用程序執行了很多繪圖呼叫,它的載入時間將會增加。
如果可以,您應該在伺服器上安裝 freenx 並使用 nx 客戶端(例如:remmina 或 nomachine.com 客戶端):它們通過反序列化 X11 繪圖呼叫來工作,從而大大提高了性能。