Старый друг - лучше новых двух (тут трется воскресший freenx-server)

Модераторы: dimbor, Модераторы разделов

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

На примере запроса переменных

Код: Выделить всё

SELECT 
   count(key), /* если ключа нет будет 0 */
    key,
    coalesce(us.value,rs.value) as value /* если у юзверя установлен параметр то он не NULL */
FROM settings as rs
LEFT JOIN settings as us on us.key=rs.key AND us.user=@user
WHERE rs.user='root'
GROUP BY rs.key /* обязательно, если запрос не по одному ключу в WHERE, а если по одному то и не важно */
GROUP BY, это конечно, дополнительные расходы, но небольшие.

И вообще это все проще и быстрее переписать на Golang ;)
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Благодарю! До счетчика мог бы и сам догадаться, но видать уже втупил вкрай с этой 1ч, не к ночи.
Djelf писал:
13.01.2020 13:36
И вообще это все проще и быстрее переписать на Golang ;)
Да хоть матом на заборе. Тоже проще в итоге. Это все переписывание преследует в первую очередь цель разобраться, как оно функционирует в целом. И всплывают нюансики, знаешь ли.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

В качестве промежуточного отчета имею сообщить: Все (буквально все) ранее писанное мной на баше написано криво, и надо переписывать. Пичаль.

Нагребая nxsettings, прокачал скилл работы со строками. Перебираючи конфиги, оно тормозило нещадно. А как выкинул к хреням все эти grep, cut, tr, sed, awk, скорость увеличилась в разы. Где-то в четыре раза, если верить time. Баш все это сам умеет, только приноровиться надо было.

Посему из nxsetup получается знатная вундервафля, проверяющая все что душе угодно.

Также даже многострочники из сопроцесса читать научился - надо всего лишь знать, сколько строк будет в ответе - животворящий count() помогает. Иногда только запросов получается два вместо одного. При постоянно открытой базе и хилых объемах данных, скорость особо не просаживается.

В связи с открывшимся разнообразием возможностей возникает такой вопрос. Если каждый рабочий nx-инстанс все равно с двумя БД работает, может вешать сопроцесс на все время существования и вторую БД туда просто приатачивать?
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

dimbor писал:
16.01.2020 19:33
В связи с открывшимся разнообразием возможностей возникает такой вопрос. Если каждый рабочий nx-инстанс все равно с двумя БД работает, может вешать сопроцесс на все время существования и вторую БД туда просто приатачивать?
Точно так: https://www.sqlite.org/lang_attach.html Два сопроцесса не требуются.
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Ну я тут слегка подумал ;)
Если ты решил загнать настройки в sqlite, то скорость обработки всяких ini`шек не имеет никакого значения, +1с это проблема?
Поиск и чтение, какой то настройке в ini, это критично, а при выполнении условия = они все уже в базе sqlite вот на это можно закрыть глаза.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Все ж неспроста мутится. Вылижу по скорости набор конфигов - появятся готовые решения для nxnode и nxserver. Да уже часть есть. Они позволят оптимизировать по скорости сам протокол установки сеанса, не отвлекаясь на фигню всякую. Да и схемы систематизирутся, алгоритмы оформляются - вот это вот все. В идеале вместо source nxloadconfig везде должен быть source nxfunctions, условно говоря.

Если б не увидел конский рост производительности, не парился сейчас бы. Дико интересно, насколько можно разогнать старичка-инвалида. Ну да уже буквально несколько суток осталось, в зависимости от загрузки на основной работе. Потом представлю конкретику.
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Насколько разогнать можно?
Предполагаю, что примерно до <1с, от момента запуска, до получения данных и их отображения от NX-сервера.
Реализация на Golang, на текущем сервере, проходит процедуру коннекта за 2-3с, на NXClient 5с, OpenNX вообще уныл в этом плане (зато у него прогресс-бар логина есть).
Но OpenNX можно бустануть. В AsyncProcess отключить таймаут ожидания нахрен ;)
Смысл то в чем, при TCP_NODELAY пакет от NXServer всегда будет меньше размера TCP пакета (а даже если выключен, то все равно одним пакетом, но возможно список запущенных сессий может не влезть, если их 100500), следовательно одним пакетом и проскочит, т.е. в wxInputStream весь ответ будет доступен сразу же, поэтому задержка (уверен на 99%) вообще не требуется.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Djelf писал:
19.01.2020 10:44
Насколько разогнать можно?
Поживем - увидим. Пока старые source *.conf явно быстрее летают, чем манипуляции с БД. Одна надежда предвычислить и прочекать заранее все, до чего дотянусь. Предупреждаю, может получиться: "Думала - счастье!... А нет, опять опыт."

Кстати, спрошу еще две вещи. Сейчас не сильно парит, но потом может выползти.

1) Заполняю _пустую_ БД, куча инсертов - ~1.5 с., но после этого первая операция чтения проходит через ~5 с. В непустой с update все отлично. Я так пол, скулайт файл целиком с нуля 5 секунд записывает. Что так долго? Там 20К всего.

2) Движок мне, блин, ключи при чтении по алфавиту сортирует по умолчанию. А мне их надо в порядке записи в базу. Они друг от друга иногда зависят. В ORDER BY ничего похожего на "ордер не бай" не нашел. Однако просмотрщик от mc их показывает в нужном порядке. Как так?
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

По (1) я писал выше: включи режим "PRAGMA journal_mode = WAL". Можно еще поиграться с прагмами типа ""PRAGMA synchronous = OFF", "PRAGMA cache_size = 100000", "PRAGMA temp_store = MEMORY", а можно поставлять базу как ее дамп и не читать настройки, а поднимать из дампа.
В принципе можно поставлять базу и как базу, но если она создана на версии 3.6.17, то 3.6.16 ее не прочтет.
Есть еще вот это https://www.sqlite.org/mmap.html я не использую, потому что у меня базы в несколько гигов, а на конфиг в 20кб - самое то!!!

По (2) прочитай вот это https://www.sqlite.org/autoinc.html Есть ORDER BY rowid, но при создании таблицы, rowid нужно указывать явно с autoincrement, иначе при vacuum будет пересчет поля rowid и не факт что нумерация не собьется.
mc видимо показывает dump из базы, а он упорядочен по rowid или не упорядочен... я код dump`а не смотрел.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

В общем и целом закончил перенос конфигов в бд. Полез накатывать и гляжу, без очередного перекурочивания тушки не обойтись. Уже повторяюсь. Публикую промежуточный результат без достигнутой начальной цели. Оказалось, после замены внешних прог на суровый башизм время подключения уменьшилось почти в два раза. С 5-6 с. до 3-4, причем полторы-две из них уходит на подъем агента.

Из большого опыта известно, залог успешного писькомерства - правильная линейка. Запускал в рутлесе xfce4-terminal. Opennx, под линуксом и виндой - без разницы. Даже с навешанными шарами и принтерами время запуска не меняется - они подтягиваются в фоне. ENABLE_SU_AUTHENTICATION="1" Я там еще убрал лишний запуск nxnode --check, смысла в нем не понял. NODE_APP_WAIT_TIMEOUT="1" Может играть рояль, а может и не играть (у мя там еще извращение с быстрым завершением рутлеса тестируется)

И это я еще скулайт на сопроцессы не перевел. Приступаю.

Свершения - в ветке, пакет собрал. Лучше его переустановить - там файлик добавился.

ЗЫ: nonencrypted не тестил. Мог сломать.
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Да, бодрее запускается. Но есть еще над чем работать ;)
Вот тебе точнейшиt логи со стороны клиента.

С сетевой задержкой на йоте

Код: Выделить всё

GolangNX v.0.0.1
Usage: nx2go file.nxs
10:44:12.484325 client: Load config file: /home/addm/.nx/config/192.168.0.50.nxs
10:44:12.485917 client: Config Application 'nxclient' Version '1.3'
10:44:12.485942 client: Found 9 config Groups
10:44:12.486200 client: Check LookPath for /usr/NX/bin/nxssh
10:44:12.486234 client: set environment variable NX_SYSTEM to /usr/NX
10:44:12.486243 client: set environment variable NX_ROOT to /home/addm/.nx
10:44:12.486250 client: set environment variable NX_HOME to /home/addm
10:44:12.486256 client: set environment variable NX_CONFIG to /home/addm/.nx/config/192.168.0.50.nxs
10:44:12.486263 client: set environment variable NX_NXCLIENT to /usr/bin/nxagent
10:44:12.486269 client: set environment variable XAUTHORITY to /home/addm/.Xauthority
10:44:12.486275 client: set environment variable NX_TEMP to 
10:44:12.486281 client: set environment variable HOME to /home/addm
10:44:12.486288 client: set environment variable LD_LIBRARY_PATH to /usr/NX/lib
10:44:12.486298 client: set environment variable NX_VERSION to 3.5.0
10:44:12.486384 client: Starting nxssh: /usr/NX/bin/nxssh -nx -v -x -2 -4 -p 22 -B -E -i /home/addm/.nx/temp/keylog -o StrictHostKeyChecking=no nx@192.168.0.50
10:44:12.488718 client: Started nxssh with pid 24665
10:44:12.488759 client: mkdir /home/addm/.nx/24665
10:44:12.488965 client: set environment variable NX_TEMP to /home/addm/.nx/24665
10:44:12.488995 client: Waiting nxssh for exit
10:44:13.036961 nxssh: (StdIn) NX> 208 Using auth method: publickey
10:44:13.572053 nxssh: (StdIn) HELLO NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.23)
10:44:13.572154 nxssh: (StdOut) Send: HELLO NXCLIENT - Version 3.5.0
10:44:13.619889 nxssh: (StdIn) NX> 105 HELLO NXCLIENT - Version 3.5.0
10:44:13.620016 nxssh: (StdIn) NX> 134 Accepted protocol: 3.5.0
10:44:13.620043 nxssh: (StdOut) Send username: addm
10:44:13.762372 nxssh: (StdIn) NX> 105 SET SHELL_MODE SHELL
10:44:13.763028 nxssh: (StdIn) NX> 105 SET AUTH_MODE PASSWORD
10:44:13.763049 nxssh: (StdIn) NX> 105 login
10:44:13.763769 nxssh: (StdIn) NX> 101 User: addm
10:44:13.763790 nxssh: (StdOut) Send password: ***
10:44:13.896124 nxssh: (StdIn) NX> 102 Password:
10:44:14.385158 nxssh: (StdIn) NX> 103 Welcome to: server2 user: addm
10:44:14.385321 nxssh: (StdOut) listsession: addm
10:44:14.438986 nxssh: (StdIn) NX> 105 listsession --user="addm" --status="suspended,running" --type="unix-application"
10:44:14.525135 nxssh: (StdIn) NX> 127 Sessions list of user 'addm' for reconnect:
10:44:14.525180 nxssh: (StdIn) Display Type             Session ID                       Options  Depth Screen         Status      Session Name
10:44:14.525191 nxssh: (StdIn) ------- ---------------- -------------------------------- -------- ----- -------------- ----------- ------------------------------
10:44:14.525199 nxssh: (StdIn) 2000    unix-application 3815C6AFDC559FD983082B7429B2300B --D--PSA    32 1920x1080                  server2
10:44:14.525208 nxssh: (StdIn) NX> 148 Server capacity: not reached for user: addm
10:44:14.666486 nxssh: (StdIn) NX> 105 startsession --virtualdesktop="1" --rootless="0" --application="startxfce4" --link="adsl" --screeninfo="1920x1080x32+render" --encryption="1" --samba="0" --cups="0" --media="0" --session="server2" --type="unix-application" --client="linux" --keyboard="pc105/us"
10:44:15.236373 nxssh: (StdIn) NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.23)
10:44:15.326985 nxssh: (StdIn) NX> 1009 Session status: starting
10:44:15.428603 nxssh: (StdIn) NX> 700 Session id: server2-2002-F6CB638FAD517DCF35279067B9A4AFF4
10:44:15.431240 nxssh: (StdIn) NX> 705 Session display: 2002
10:44:15.433273 nxssh: (StdIn) NX> 703 Session type: unix-application
10:44:15.436060 nxssh: (StdIn) NX> 701 Proxy cookie: 6a3049b590ee55aa4cdbf9f1fa8cf6ae
10:44:15.447565 nxssh: (StdIn) NX> 702 Proxy IP: 192.168.0.50
10:44:15.489489 nxssh: (StdIn) NX> 706 Agent cookie: 6a3049b590ee55aa4cdbf9f1fa8cf6ae
10:44:15.489656 nxssh: (StdIn) NX> 704 Session cache: unix-application
10:44:15.489683 nxssh: (StdIn) NX> 707 SSL tunneling: 1
10:44:15.865423 nxssh: (StdIn) NX> 710 Session status: running
10:44:15.872808 nxssh: (StdIn) NX> 1002 Commit
10:44:15.872896 client: mkdir /home/addm/.nx/S-server2-2002-F6CB638FAD517DCF35279067B9A4AFF4
10:44:15.873030 client: options: nx/nx,cookie=6a3049b590ee55aa4cdbf9f1fa8cf6ae,shmem=1,shpix=1,font=1,encryption=1,session=session,id=server2-2002-F6CB638FAD517DCF35279067B9A4AFF4:2002
10:44:15.873035 client: options saved to: /home/addm/.nx/S-server2-2002-F6CB638FAD517DCF35279067B9A4AFF4/options
10:44:15.873042 nxssh: (StdOut) Send: bye
10:44:15.948841 nxssh: (StdIn) NX> 105 bye
10:44:15.949910 nxssh: (StdErr) NX> 105 bye
10:44:15.949939 nxssh: (StdOut) Send: NX> 299 Switch connection to: NX mode: encrypted options: nx,options=/home/addm/.nx/S-server2-2002-F6CB638FAD517DCF35279067B9A4AFF4/options:2002
10:44:15.955280 nxssh: (StdErr) NX> 105 bye
И без задержки, на localhost

Код: Выделить всё

GolangNX v.0.0.1
Usage: nx2go file.nxs
15:42:53.110336 client: Load config file: /home/addm/.nx/config/localhost.nxs
15:42:53.111896 client: Config Application 'nxclient' Version '1.3'
15:42:53.111919 client: Found 9 config Groups
15:42:53.112247 client: Check LookPath for /usr/NX/bin/nxssh
15:42:53.112279 client: set environment variable NX_SYSTEM to /usr/NX
15:42:53.112288 client: set environment variable NX_ROOT to /home/addm/.nx
15:42:53.112295 client: set environment variable NX_HOME to /home/addm
15:42:53.112302 client: set environment variable NX_CONFIG to /home/addm/.nx/config/localhost.nxs
15:42:53.112308 client: set environment variable NX_NXCLIENT to /usr/bin/nxagent
15:42:53.112315 client: set environment variable XAUTHORITY to /home/addm/.Xauthority
15:42:53.112321 client: set environment variable NX_TEMP to 
15:42:53.112327 client: set environment variable HOME to /home/addm
15:42:53.112344 client: set environment variable LD_LIBRARY_PATH to /usr/NX/lib
15:42:53.112351 client: set environment variable NX_VERSION to 3.5.0
15:42:53.112441 client: Starting nxssh: /usr/NX/bin/nxssh -nx -v -x -2 -4 -p 22 -B -E -i /home/addm/.nx/temp/keylog -o StrictHostKeyChecking=no nx@localhost
15:42:53.113175 client: Started nxssh with pid 30467
15:42:53.113216 client: mkdir /home/addm/.nx/30467
15:42:53.113310 client: set environment variable NX_TEMP to /home/addm/.nx/30467
15:42:53.113338 client: Waiting nxssh for exit
15:42:53.165258 nxssh: (StdIn) NX> 208 Using auth method: publickey
15:42:53.697823 nxssh: (StdIn) HELLO NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
15:42:53.697908 nxssh: (StdOut) Send: HELLO NXCLIENT - Version 3.5.0
15:42:53.699418 nxssh: (StdIn) NX> 105 HELLO NXCLIENT - Version 3.5.0
15:42:53.702378 nxssh: (StdIn) NX> 134 Accepted protocol: 3.5.0
15:42:53.702439 nxssh: (StdOut) Send username: addm
15:42:53.702689 nxssh: (StdIn) NX> 105 SET SHELL_MODE SHELL
15:42:53.702909 nxssh: (StdIn) NX> 105 SET AUTH_MODE PASSWORD
15:42:53.703097 nxssh: (StdIn) NX> 105 login
15:42:53.703308 nxssh: (StdIn) NX> 101 User: addm
15:42:53.703327 nxssh: (StdOut) Send password: ***
15:42:53.703628 nxssh: (StdIn) NX> 102 Password:
15:42:54.288464 nxssh: (StdIn) NX> 103 Welcome to: addm-VirtualBox user: addm
15:42:54.288508 nxssh: (StdOut) listsession: addm
15:42:54.301169 nxssh: (StdIn) NX> 105 listsession --user="addm" --status="suspended,running" --type="unix-application"
15:42:54.354735 nxssh: (StdIn) NX> 127 Sessions list of user 'addm' for reconnect:
15:42:54.354858 nxssh: (StdIn) Display Type             Session ID                       Options  Depth Screen         Status      Session Name
15:42:54.354878 nxssh: (StdIn) ------- ---------------- -------------------------------- -------- ----- -------------- ----------- ------------------------------
15:42:54.354892 nxssh: (StdIn) NX> 148 Server capacity: not reached for user: addm
15:42:54.361189 nxssh: (StdIn) NX> 105 startsession --virtualdesktop="1" --rootless="0" --application="startxfce4" --link="adsl" --screeninfo="1920x1080x32+render" --encryption="1" --samba="0" --cups="0" --media="0" --session="server2" --type="unix-application" --client="linux" --keyboard="pc105/us"
15:42:55.083595 nxssh: (StdIn) NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
15:42:55.490558 nxssh: (StdIn) NX> 1009 Session status: starting
15:42:55.575231 nxssh: (StdIn) NX> 700 Session id: addm-VirtualBox-2001-0416188D4F9C681467A46F53CFD28413
15:42:55.575295 nxssh: (StdIn) NX> 705 Session display: 2001
15:42:55.576293 nxssh: (StdIn) NX> 703 Session type: unix-application
15:42:55.577331 nxssh: (StdIn) NX> 701 Proxy cookie: 65e895c2944ce6061aee70878df32843
15:42:55.578346 nxssh: (StdIn) NX> 702 Proxy IP: 127.0.1.1
15:42:55.579650 nxssh: (StdIn) NX> 706 Agent cookie: 65e895c2944ce6061aee70878df32843
15:42:55.580853 nxssh: (StdIn) NX> 704 Session cache: unix-application
15:42:55.582046 nxssh: (StdIn) NX> 707 SSL tunneling: 1
15:42:55.994119 nxssh: (StdIn) NX> 710 Session status: running
15:42:55.994866 nxssh: (StdIn) NX> 1002 Commit
15:42:55.994916 client: mkdir /home/addm/.nx/S-addm-VirtualBox-2001-0416188D4F9C681467A46F53CFD28413
15:42:55.995047 client: options: nx/nx,cookie=65e895c2944ce6061aee70878df32843,shmem=1,shpix=1,font=1,encryption=1,session=session,id=addm-VirtualBox-2001-0416188D4F9C681467A46F53CFD28413:2001
15:42:55.995053 client: options saved to: /home/addm/.nx/S-addm-VirtualBox-2001-0416188D4F9C681467A46F53CFD28413/options
15:42:55.995057 nxssh: (StdOut) Send: bye
15:42:55.996955 nxssh: (StdErr) NX> 1002 Commit
15:42:55.996993 nxssh: (StdErr) NX> 1002 Commit
15:42:55.997006 nxssh: (StdIn) NX> 105 bye
15:42:56.029602 nxssh: (StdErr) NX> 105 bye
15:42:56.029643 nxssh: (StdOut) Send: NX> 299 Switch connection to: NX mode: encrypted options: nx,options=/home/addm/.nx/S-addm-VirtualBox-2001-0416188D4F9C681467A46F53CFD28413/options:2001
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Хм, а вот тут, в nxnode, 0.5с действительно нужно? При отключении не работает, но даже 0.01с хватает, возможно не всегда.
Как так при 0 не работает, а 0.01с хватает?
Тут никак нельзя исхитриться поймать другим способом?
Что там вообще на сервере происходит между NX 707 и NX 710?

Код: Выделить всё

elif stringinstring "Info: Waiting for connection from" "$line"; then
	# Session is running
	# dimbor: with nx-libs 3.5.99 node_monitor catch of startsession
	# restore too fast
	sleep 0.5s
	echo "NX> 710 Session status: running"
	echo "NX> 1002 Commit"
	echo "NX> 1006 Session status: running" 
А еще тут можно кинуть 1 TCP/IP пакет, вместо 3х (тут я предполагаю что в режиме TCP_NODELAY отправится один пакет).

Код: Выделить всё

	echo $'NX> 710 Session status: running\nNX> 1002 Commit\nNX> 1006 Session status: running'
Почти, почти RDP догнали :drinks:

P.S. Альфа консольного клиента на Golang под Linux с этой детализацией: https://cloud.mail.ru/public/23Xv/2JeEcrEqH
Еще быстрее, чем это, сделать клиента можно только поменяв протокол на, например json, и фигачить через него сразу весь информативный блок.
Для работы с этим , использую https://code.visualstudio.com, может тебе и с bash оно "попрет".

P.P.S. Из-за скорости соединения x2go не использовал, пользователь, может и подождать, но зачем, если есть возможность этого не делать?

P.P.P.S Добавь в wiki инструкцию по запуску nxclinet на новых дистрибутивах.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Djelf писал:
01.02.2020 18:52
Хм, а вот тут, в nxnode, 0.5с действительно нужно? При отключении не работает, но даже 0.01с хватает, возможно не всегда.
Как так при 0 не работает, а 0.01с хватает?
Тут никак нельзя исхитриться поймать другим способом?
Что там вообще на сервере происходит между NX 707 и NX 710?
Когда агент готов ко внешнему подключению, он шлет это сообщение в stdout (и заодно в session log). Возможно преждевременно. Раньше (не)ловилось в node_start_agent() и все вставало раком там, если слишком быстро переслать готовность клиенту.
Коссвенно пересекается с последующей готовностью к внутреннему подключению (отслеживается понравившимся тебе xdpyinfo). От каковой неготовности смертельно обижается уже приложуха. У меня 0.05 уже не работает. Поставлю пока 0.2.

Заменил xdpyinfo на более правильный xhost. Переписал там все, чтоб было побыстрее. Но сейчас оно либо не ждет совсем, либо ждет весь срок и отлупляется. Смутно вспоминаю, эта проверка была вкорячена, когда агент с либами еще 3.2 был чоль.

В данный момент считаю раскапывание проволочек агента распылением невеликих сил со средствами. Потом, как у нас станет усе в шоколаде, надо будет немцам обоснованную кляузу на агент настрочить.
Djelf писал:
01.02.2020 18:52
А еще тут можно кинуть 1 TCP/IP пакет, вместо 3х (тут я предполагаю что в режиме TCP_NODELAY отправится один пакет).
Done.
Djelf писал:
01.02.2020 18:52
P.S. Альфа консольного клиента на Golang под Linux с этой детализацией: https://cloud.mail.ru/public/23Xv/2JeEcrEqH
Еще быстрее, чем это, сделать клиента можно только поменяв протокол на, например json, и фигачить через него сразу весь информативный блок.
Для работы с этим , использую https://code.visualstudio.com, может тебе и с bash оно "попрет".
Джейсона посмотрю позже, зопейсал.
Я конечно сильно наглый, но вдруг у тебя время найдется? В смысле opennx разогнать - таймауты там, группировка команд - все что ты нарыл. Можно даже (наглеть, так наглеть) пулреквестом в реп. Но и diff сойдет, если че. Мне сейчас отвлекаться не хочется: весь в серверном баше. А это, сказать, особое состояние души - экзистенциальное ;) Да и если неправильно копать навстречу тоннель, можно сдуру вырыть два. Сколько раз так было в этом нашем OSS.
Djelf писал:
01.02.2020 18:52
P.P.P.S Добавь в wiki инструкцию по запуску nxclinet на новых дистрибутивах.
В гитхабовскую вику или ридми? И что добавить, ссылку на дискуссию? Что понял, там в оконцовке либа чудодейственная получилась. А перетолмачивать буржуинскую мову нерезидентов о нещупанных своими руками вещах - опасаюсь.
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Ну можно поковырять OpenNX, хотя я бы лучше GolangNX доковырял... Т.к. вроде определился с gui, в Golang с этим не очень все хорошо.
Если ты код посмотрел, то там видно, что все значительно проще делается, чем на с++

А про nxclient без разницы где, лишь бы заметно было.
Я когда искал фикс проблемы (ведь возможно же было что кто-то уже пофиксил?) натыкался только на топики без ответа...
Так что решение нужно задокументировать, потому что обсуждение ушло в closed, а туда мало кто лезет.
Кстати, либы и на старой Glibc будут работать, там очень небольшой фикс.
Сам не ожидал, что linux`овые библиотечные вызовы так легко и непринужденно подменяются :crazy:

На текущий момент установка nxclient выглядит как то вот так (как бы это обернуть получше в deb):

Код: Выделить всё

#!/bin/sh
mkdir nxclient
cd nxclient
wget http://debian.rot13.org/binary/64.34.161.181/download/3.5.0/Linux/nxclient_3.5.0-7_amd64.deb
#wget http://debian.rot13.org/binary/64.34.161.181/download/3.5.0/Linux/nxclient_3.5.0-7_i386.deb
wget https://github.com/dimbor-ru/freenx-server/files/4128228/nxfixglibc1190.tar.gz
dpkg -i ./nxclient_3.5.0-7_amd64.deb
find /usr/NX/lib -name "libz*" -delete
tar -xvf nxfixglibc1190.tar.gz
#cp ./nxfixglibc1190/x32/nxfixglibc1190.so /usr/NX/lib/nxfixglibc1190.so
cp ./nxfixglibc1190/x64/nxfixglibc1190.so /usr/NX/lib/nxfixglibc1190.so
cp /usr/NX/bin/nxclient /usr/NX/bin/nxclient.bin
echo '#!/bin/sh' > /usr/NX/bin/nxclient
echo 'LD_PRELOAD=/usr/NX/lib/nxfixglibc1190.so /usr/NX/bin/nxclient.bin /$@' >> /usr/NX/bin/nxclient
+ для работы через либы Арктики. Иначе в errors пишется что совместный протокол 1.5.0

Код: Выделить всё

#!/bin/sh
find /usr/NX/lib -name "libjpeg*" -delete
find /usr/NX/lib -name "libXcomp*" -delete
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/NX/lib/libjpeg.so.62
ln -s /usr/lib/x86_64-linux-gnu/libXcomp.so.3 /usr/NX/lib/libXcomp.so
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Ну и OpenNX. Как я и предполагал, пауза тут вообще не нужна. В буфере и так все что нужно уже есть.
Из-за его скорости подключения он мне и не нравился, но тогда я был моложе и глупее и не знал что это можно исправить.
Надо бы еще подогнать % в прогресс баре, он [/offtopic][/ish]теперь странный...
Зверская скорость получилась, особенно в связке с твоим новым сервером. Можно теперь на радостях и :drunk:

AsyncProcess.cpp
if (m_pEvtHandler) {
// If no LF received within a second, send buffer anyway
+ if (!m_sOutBuf.IsEmpty()) {
- //if ((m_sSpecial.Len() && m_sOutBuf.StartsWith(m_sSpecial)) || ((m_cOutWatch.Time() > 100) && (!m_sOutBuf.IsEmpty()))) {
И по поводу чекинга запуска библиотек.
Может просто тупо мониторить появление /tmp/.X11-unix/=X2000 ?

И, кстати, зря дропнул протокол 1.5, на Thinstation выше 1.5 не взлетел, хз почему, адские тормоза были...
У меня, немного уже осталось, но несколько мусорного железа типа Celeron 300Mhz все еще на нем успешно трудятся :rolleyes:
Интересно, сколько еще такого трупоспособного мусора так работает?
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

1.5 верну попозжа. Но наощупь, ибо тестить негде. Я его убрал, т.к. у него свой монитор в nxnode на пол-файла, фактически дублирующий имеющийся.

По опенэныксу поздравляю. Сунь плиз в его тему окончательный diff - пересоберу пакет и инсталяшку.
Добавлено (20:45):
Да, и ридми тоже допишу. Только этап закончу с sqlite.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Хочешь кого посмешить, расскажи ему о своих планах. Читал твои сообщения, много думал. Потом вычистил таки дублированное ожидание в nxnode, но не там. Еще одну десятую секунды выиграл. Да и еще минус всякие крохи в рамках подготовки тушки к новым конфигам. Посмотри, должно ускориться еще. Теперь видно, как непатченный opennx тормозит.
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Очень даже круто! Меньше 2х секунд до момента запуска х`ов стало.

Кстати, вот архив всех клиентов: http://ftp.disconnected-by-peer.at/NX/
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

А... ты еще кое где перелопатил...

Так`с 710 посылаем с задержкой (0.1с, у меня хватает).

Код: Выделить всё

18:16:40.920353 nxssh: (StdIn) NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
18:16:41.025116 nxssh: (StdIn) NX> 1009 Session status: starting
18:16:41.113416 nxssh: (StdIn) NX> 700 Session id: addm-VirtualBox-2002-29B735D94D37B00E9EC00E2CBED99DE2
18:16:41.114872 nxssh: (StdIn) NX> 705 Session display: 2002
18:16:41.114893 nxssh: (StdIn) NX> 703 Session type: unix-application
18:16:41.116331 nxssh: (StdIn) NX> 701 Proxy cookie: 71ee0caf48f947a8f00d69145fbcfe4f
18:16:41.116716 nxssh: (StdIn) NX> 702 Proxy IP: 127.0.1.1
18:16:41.117606 nxssh: (StdIn) NX> 706 Agent cookie: 71ee0caf48f947a8f00d69145fbcfe4f
18:16:41.119664 nxssh: (StdIn) NX> 704 Session cache: unix-application
18:16:41.119694 nxssh: (StdIn) NX> 707 SSL tunneling: 1
18:16:41.124141 nxssh: (StdIn) NX> 710 Session status: running
18:16:41.124765 nxssh: (StdIn) NX> 1002 Commit
И без задержки

Код: Выделить всё

17:53:44.510823 nxssh: (StdIn) NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
17:53:44.616774 nxssh: (StdIn) NX> 1009 Session status: starting
17:53:44.619566 nxssh: (StdIn) NX> 710 Session status: running
17:53:44.621380 nxssh: (StdIn) NX> 1002 Commit
Тут видно, что не были переданы с сервера параметры сессии, возможно ли прицепится к тому что они были переданы?

Борьба серьезная, за целую половину секунды!!! :crazy:

З.Ы. Похоже RDP по скорости соединения, внезапно, обогнали... А это уже наглость! :rolleyes:
Добавлено (18:32):
Ну и diff.
Если сессий будет много и в пакет не пролезет, возможно сломается, иначе не вижу причин, чтобы так не работало.
В любом случае, задержка в 1 секунду, почти на каждой стадии соединения, это выглядит отвратительно...
А еще лучше, в OpenNX, если будет глючить, можно завести галочку "Turbo connect" и возвращать тормозное соединение.

Код: Выделить всё

--- a/AsyncProcess.cpp
+++ b/AsyncProcess.cpp
@@ -145,8 +145,11 @@ AsyncProcess::Entry()
         }
         if (m_pEvtHandler) {
             // If no LF received within a second, send buffer anyway
-            if ((m_sSpecial.Len() && m_sOutBuf.StartsWith(m_sSpecial)) ||
-                    ((m_cOutWatch.Time() > 100) && (!m_sOutBuf.IsEmpty()))) {
+            //if ((m_sSpecial.Len() && m_sOutBuf.StartsWith(m_sSpecial)) || ((m_cOutWatch.Time() > 100) && (!m_sOutBuf.IsEmpty()))) {
+            //
+            //+Djelf: there is no need to wait, all data should already be in the buffer, 
+            //        with the exception of a long list of sessions, more than a TCP/IP packet
+            if (!m_sOutBuf.IsEmpty()) {
                 myLogTrace(MYTRACETAG, wxT("IoThread outwatch timed out"));
                 wxCommandEvent event(wxEVT_PROCESS_STDOUT, wxID_ANY);
                 event.SetString(m_sOutBuf);
@@ -180,8 +183,12 @@ AsyncProcess::Entry()
         }
         if (m_pEvtHandler) {
             // If no LF received within a second, send buffer anyway
-            if ((m_sSpecial.Len() && m_sErrBuf.StartsWith(m_sSpecial)) ||
-                    ((m_cErrWatch.Time() > 100) && (!m_sErrBuf.IsEmpty()))) {
+            //if ((m_sSpecial.Len() && m_sErrBuf.StartsWith(m_sSpecial)) ||
+            //        ((m_cErrWatch.Time() > 100) && (!m_sErrBuf.IsEmpty()))) {
+            //
+            //+Djelf: there is no need to wait, all data should already be in the buffer, 
+            //        with the exception of a long list of sessions, more than a TCP/IP packet
+            if (!m_sErrBuf.IsEmpty()) {
                 myLogTrace(MYTRACETAG, wxT("IoThread errwatch timed out"));
                 wxCommandEvent event(wxEVT_PROCESS_STDERR, wxID_ANY);
                 event.SetString(m_sErrBuf);
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

И что так радикально? А если закрутить этот таймаут на порядок?

А то что ты раньше нарыл, уже неактуально чтоль?
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

А что там радикального то?
Пока пакет данных не пришел буфер пуст.
Когда придет, он целиком упадет в буфер, мы же не потоковые данные через tty получаем, а пакетами.
Следовательно необходимости в задержке вообще нет.
Исключение является переполнение пакета, такое может возникнуть только в случае 10 сессий, но возможно и это как то переварится...
Откатить всегда можно, у меня пока стабильно работает.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Понятно. А я тебе кривую ссылку дал, исправил. Еще раз жду твоего вердикта на Re: opennx
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

А, это... Ну вот как то так работает.

Код: Выделить всё

--- a/MySession.cpp
+++ b/MySession.cpp
@@ -837,7 +837,7 @@ MySession::OnSshEvent(wxCommandEvent &event)
                     ::wxRemoveFile(fn.GetFullPath());
             }
             m_pDlg->SetStatusText(_("Sending username"));
-            printSsh(m_pCfg->sGetSessionUser());
+            //printSsh(m_pCfg->sGetSessionUser());
             break;
         case MyIPC::ActionSendPassword:
             m_pDlg->SetStatusText(_("Authenticating"));
@@ -877,16 +877,25 @@ MySession::OnSshEvent(wxCommandEvent &event)
                     m_eConnectState = STATE_SHELLMODE;
                     break;
                 case STATE_SHELLMODE:
-                    printSsh(wxT("SET SHELL_MODE SHELL"));
+                    scmd = wxT("SET SHELL_MODE SHELL\n");
+                    scmd << wxT("SET AUTH_MODE PASSWORD\n");
+                    scmd << wxT("login\n");
+                    scmd << m_pCfg->sGetSessionUser();
+                    printSsh(scmd);
+                    m_eConnectState = STATE_LOGIN;
+                    break;
+                /*
+                    printSsh(wxT("SET SHELL_MODE SHELL");
                     m_eConnectState = STATE_AUTHMODE;
                     break;
                 case STATE_AUTHMODE:
                    printSsh(wxT("SET AUTH_MODE PASSWORD"));
                     m_eConnectState = STATE_LOGIN;
                     break;
                 case STATE_LOGIN:
                     printSsh(wxT("login"));
                    break; 
+                */
                 case STATE_LIST_RESOURCES:
                     m_pDlg->SetStatusText(_("Query server-side features"));
                     printSsh(wxT("resourcelist"));
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Окей, к вечеру пересоберу. Надеюсь.
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

dimbor писал:
04.02.2020 10:23
Окей, к вечеру пересоберу. Надеюсь.
Ты только старые строки в коде не стирай. И добавь туда что типа:

Код: Выделить всё

Do not delete it!
Sending multiple messages at the same time does not correspond to the exchange protocol, but these messages are always sent in that order.
FreeNX understands and correctly processes this.
This does not give much startup acceleration, but still gives.
Потому что это малюсенький хак протокола (а может и не хак, кто его знает как оригинальный nx внутри себя устроен), и если так работает, почему бы и нет?
Правильный протокол, для истории, и понимания кода, должен остаться.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Обещания пока не сдержал, залип на фриэныкс. Отцепил базу от командной строки. Глянь, оно еще пошустрее стало, или у меня глюки?
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

Да вроде так же.
Точно измерить не получается, потому что голанговский клиент на этой версии сломался ;)
1. На запрос listsession приходят два одинаковых ответа. nxclient и opennx их как то переваривают. Мой почему-то нет.
2. nxserver --cleanup с первого раза не очищает все сессии.
Спасибо сказали:

dimbor
Ведущий рубрики
Сообщения: 1502
Статус: Подвинутый участник

Re: Старый друг - лучше новых двух

Сообщение dimbor »

Значит глюки. Посмотрю, спасиб.
Добавлено (09:52):
От задваивания:

Код: Выделить всё

--- a/nxserver
+++ b/nxserver
@@ -378,7 +378,6 @@ _session_list_user_suspended() {
 
 session_list_user_suspended() {
        local SESSION_LIST_CACHE_DATA=$(_session_list_user_suspended "$@")
-   echo "$SESSION_LIST_CACHE_DATA"
    echo "$SESSION_LIST_CACHE_DATA" | log_tee
 }
cleanup у меня работает. Где крутить, в душе не ведаю. Ругается?
Добавлено (09:59):
Во, sessions.sq3 прибей, пересоздай nxserver --list от рута. Я там тип TEXT к полям добавил.
Добавлено (10:04):
opennx пакеты сделал.
Спасибо сказали:

Djelf
Сообщения: 614
ОС: Гигтег+Цшт32

Re: Старый друг - лучше новых двух

Сообщение Djelf »

dimbor писал:
05.02.2020 09:26
От задваивания:
cleanup у меня работает. Где крутить, в душе не ведаю. Ругается?
Задваивание ушло. 2.05с Лог:
Spoiler
API server listening at: 127.0.0.1:28893
GolangNX v.0.0.1
Usage: nx2go file.nxs
10:11:12.286971 client: Load config file: /home/addm/.nx/config/localhost.nxs
10:11:12.300461 client: Config Application 'nxclient' Version '1.3'
10:11:12.300552 client: Found 8 config Groups
10:11:12.301014 client: Check LookPath for /usr/NX/bin/nxssh
10:11:12.301055 client: set environment variable NX_SYSTEM to /usr/NX
10:11:12.301068 client: set environment variable NX_ROOT to /home/addm/.nx
10:11:12.301076 client: set environment variable NX_HOME to /home/addm
10:11:12.301083 client: set environment variable NX_CONFIG to /home/addm/.nx/config/localhost.nxs
10:11:12.301089 client: set environment variable NX_NXCLIENT to /usr/bin/nxagent
10:11:12.301099 client: set environment variable XAUTHORITY to /home/addm/.Xauthority
10:11:12.301106 client: set environment variable NX_TEMP to
10:11:12.301112 client: set environment variable HOME to /home/addm
10:11:12.301120 client: set environment variable LD_LIBRARY_PATH to /usr/NX/lib
10:11:12.301127 client: set environment variable NX_VERSION to 3.5.0
10:11:12.301360 client: Starting nxssh: /usr/NX/bin/nxssh -nx -v -x -2 -4 -p 22 -B -E -i /home/addm/.nx/temp/keylog -o StrictHostKeyChecking=no nx@localhost
10:11:12.301986 client: Started nxssh with pid 30825
10:11:12.302119 client: mkdir /home/addm/.nx/30825
10:11:12.302215 client: set environment variable NX_TEMP to /home/addm/.nx/30825
10:11:12.302248 client: Waiting nxssh for exit
10:11:12.390282 nxssh: (StdIn) NX> 208 Using auth method: publickey
10:11:13.136195 nxssh: (StdIn) HELLO NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
10:11:13.136284 nxssh: (StdOut) Send: HELLO NXCLIENT - Version 3.5.0
10:11:13.138781 nxssh: (StdIn) NX> 105 HELLO NXCLIENT - Version 3.5.0
10:11:13.141088 nxssh: (StdIn) NX> 134 Accepted protocol: 3.5.0
10:11:13.141133 nxssh: (StdOut) Send username: addm
10:11:13.143758 nxssh: (StdIn) NX> 105 SET SHELL_MODE SHELL
10:11:13.146283 nxssh: (StdIn) NX> 105 SET AUTH_MODE PASSWORD
10:11:13.148643 nxssh: (StdIn) NX> 105 login
10:11:13.151632 nxssh: (StdIn) NX> 101 User: addm
10:11:13.151664 nxssh: (StdOut) Send password: ***
10:11:13.153342 nxssh: (StdIn) NX> 102 Password:
10:11:13.251916 nxssh: (StdIn) NX> 103 Welcome to: addm-VirtualBox user: addm
10:11:13.253313 nxssh: (StdOut) listsession: addm
10:11:13.257069 nxssh: (StdIn) NX> 105 listsession --user="addm" --status="suspended,running" --type="unix-application"
10:11:13.278595 nxssh: (StdIn) NX> 127 Sessions list of user 'addm' for reconnect:
10:11:13.278647 nxssh: (StdIn) Display Type Session ID Options Depth Screen Status Session Name
10:11:13.278662 nxssh: (StdIn) ------- ---------------- -------------------------------- -------- ----- -------------- ----------- ------------------------------
10:11:13.278677 nxssh: (StdIn) NX> 148 Server capacity: not reached for user: addm
10:11:13.289253 nxssh: (StdIn) NX> 105 startsession --virtualdesktop="1" --rootless="0" --application="startxfce4" --link="adsl" --screeninfo="1920x1080x32+render" --encryption="1" --samba="0" --cups="0" --media="0" --session="server2" --type="unix-application" --client="linux" --keyboard="pc105/us"
10:11:13.922488 nxssh: (StdIn) NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
10:11:14.075072 nxssh: (StdIn) NX> 700 Session id: addm-VirtualBox-2002-0DD88B3269F0563E07A21632B75CDF41
10:11:14.076377 nxssh: (StdIn) NX> 705 Session display: 2002
10:11:14.077759 nxssh: (StdIn) NX> 703 Session type: unix-application
10:11:14.078725 nxssh: (StdIn) NX> 701 Proxy cookie: 174882b475ac2c24fbd725ef5f857e64
10:11:14.080166 nxssh: (StdIn) NX> 702 Proxy IP: 127.0.1.1
10:11:14.081596 nxssh: (StdIn) NX> 706 Agent cookie: 174882b475ac2c24fbd725ef5f857e64
10:11:14.083326 nxssh: (StdIn) NX> 704 Session cache: unix-application
10:11:14.085286 nxssh: (StdIn) NX> 707 SSL tunneling: 1
10:11:14.121385 nxssh: (StdIn) NX> 1009 Session status: starting
10:11:14.330281 nxssh: (StdIn) NX> 710 Session status: running
10:11:14.332129 nxssh: (StdIn) NX> 1002 Commit
10:11:14.332216 client: mkdir /home/addm/.nx/S-addm-VirtualBox-2002-0DD88B3269F0563E07A21632B75CDF41
10:11:14.332395 client: options: nx/nx,cookie=174882b475ac2c24fbd725ef5f857e64,shmem=1,shpix=1,font=1,encryption=1,session=session,id=addm-VirtualBox-2002-0DD88B3269F0563E07A21632B75CDF41:2002
10:11:14.332403 client: options saved to: /home/addm/.nx/S-addm-VirtualBox-2002-0DD88B3269F0563E07A21632B75CDF41/options
10:11:14.332407 nxssh: (StdOut) Send: bye
10:11:14.335599 nxssh: (StdIn) NX> 105 bye
10:11:14.339599 nxssh: (StdErr) NX> 105 bye
10:11:14.339641 nxssh: (StdOut) Send: NX> 299 Switch connection to: NX mode: encrypted options: nx,options=/home/addm/.nx/S-addm-VirtualBox-2002-0DD88B3269F0563E07A21632B75CDF41/options:2002
10:11:14.341881 nxssh: (StdErr) NX> 105 bye
10:11:14.343855 nxssh: (StdErr) NX> 105 bye
10:13:11.876491 nxssh: (StdErr) NX> 105 bye
10:13:11.877224 client: nxssh terminate with exit status 255
Failed to continue - Process 30815 has exited with status 0
cleanup у тебя работает? Странно. А ты запусти несколько сессий, а потом cleanup.
Spoiler
NX> 127 Sessions list:

Server Display Username Remote IP Session ID
------ ------- --------------- --------------- --------------------------------
127.0.0.1 2006 addm 127.0.0.1 84931FA1AC6E970E12B8CA1A3B472417
127.0.0.1 2005 addm 127.0.0.1 F76870781F0F78864DD7C319F70B8211
127.0.0.1 2004 addm 127.0.0.1 70F6802BDD775D4148B999FC426F854F
NX> 999 Bye
root@addm-VirtualBox:/var/lib/nxserver/db# nxserver --cleanup
NX> 100 NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
NX> 716 Terminating session 70F6802BDD775D4148B999FC426F854F on user request.
NX> 1001 Bye.
NX> 999 Bye
root@addm-VirtualBox:/var/lib/nxserver/db# nxserver --list
NX> 100 NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
NX> 127 Sessions list:

Server Display Username Remote IP Session ID
------ ------- --------------- --------------- --------------------------------
127.0.0.1 2006 addm 127.0.0.1 84931FA1AC6E970E12B8CA1A3B472417
127.0.0.1 2005 addm 127.0.0.1 F76870781F0F78864DD7C319F70B8211
NX> 999 Bye
root@addm-VirtualBox:/var/lib/nxserver/db#
Спасибо сказали:

dimbor удалил сообщение автора gostevsv по следующей причине: Не по теме раздела