Почему запуск какой-либо основанной на GNOME программы по SSH занимает приблизительно 30 секунд?

Основанные на GNOME программы всегда занимают приблизительно 30 секунд для запуска по SSH. Даже самые простые, как gnome-calculator. После того, как упомянутые программы запускаются, они выполняют absulutely штраф. Я запускаю использование сессии SSH ssh <user>@<host> -YC команда. Я попытался проверить использование ЦП в течение этого периода ожидания, но нет ничего из дежурного блюда. Сетевое использование пропускной способности, кажется, не является чрезмерным ни один (в диапазоне 0,2 к 2 кибибитам/с).

Я использую свою машину Ubuntu 19.10 по SSH много, и это - настоящая проблема для меня. Я видел эту проблему в более ранних версиях Ubuntu также.

Править: Я нашел, что эта задержка происходит когда вызов с g_application_run() сделан. Выполнение strace объясняет то время задержки. Последний syscall перед той задержкой poll([{fd=11, events=POLLIN}], 1, 25000). 25000 являющийся тайм-аутом в millisecons. Все затронутые программы останавливаются в этом конкретном syscall. Дескриптор файла 11 создается с помощью eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK). Все это означает, что программа ожидает некоторого события, которого никогда не происходит. Но чем это может быть и что может вызвать его?

4
задан 9 December 2019 в 22:50

2 ответа

30 секунд очень много походят на тайм-аут DNS.

Обновление вопрос с:

time ssh localhost echo
time ssh -YC user@remote echo
time ssh -YC localhost gnome-calculator

Мое предположение - то, что remote не может сделать обратный поиск Вашего IP-адреса. Так попытайтесь добавить это в server:/etc/hosts

 i.p.n.o myclient

, где i.p.n.o является Вашим клиентским IP-адресом.

0
ответ дан 21 December 2019 в 23:37

Я полагаю, что это связано с тем, что переменная среды DISPLAY не распространяется на локальную службу под названием "xdg-desktop-portal-gtk". Если он не запустится, каждое приложение gnome попытается запустить его во время запуска, подождет, пока он не появится, а затем истечет время ожидания через ~ 25 секунд в случае сбоя.

Вы можете исправить это вручную, выполнив это после входа в систему. Сначала обновите среду для процессов dbus:

$ dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY

Затем запустите службу:

$ systemctl --user start xdg-desktop-portal-gtk

Теперь запуск снова должен быть быстрым.

Если кто-то знает лучший/самый элегантный способ сделать это автоматически для каждого входа в удаленную систему, я хотел бы знать об этом.

2
ответ дан 1 October 2020 в 05:14

Другие вопросы по тегам:

Похожие вопросы: