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

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

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

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

Сообщение Djelf »

dimbor писал:
19.02.2020 22:38
ЗЫ: Может знаешь, что за параметр "strict" от клиента передается, но сейчас нигде не юзается?
Тонкий твик канала. Насколько влияет в % и в каких условиях я не знаю как измерить.

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

int SetLimits()
{
  //
  // Check if the user requested strict
  // control flow parameters.
  //

  if (useStrict == 1)
  {
    nxinfo << "Loop: LIMIT! Decreasing the token limit "
           << "to " << control -> TokenLimit / 2
           << " with option 'strict'.\n"
           << std::flush;

    control -> TokenLimit /= 2;
  }
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

dimbor писал:
19.02.2020 21:34

Это происходит вообще всегда, не только для рутлеса. Получившийся realtype засовывается агенту в options как type= А клиенту обратно отправляется 'NX> 704 Session cache: $type'. Это возвращается тот type, который пришел. Везде ложь, короче.

Расскажи плиз, что б мне тудой написать в свете моих откровений и твоих новых знаний.
Добавлено (19.02.2020 21:37):
Для начала попробую эту хрень вообще извести.
Исходя из матов агента
Loop: WARNING! Unrecognized session type 'unix-desktop'. Assuming agent session.
Warning: Unrecognized session type 'unix-desktop'. Assuming agent session.

И тем что когда я передавал с клиента тип 'agent' или 'proxy' и кэш становился сохраняемым,
Агент нужно запускать с типом 'agent'. Тогда будет сохраняемый между сессиями кэш.
Для прокси имеет смысл делать раздельные кэши: кэши гнома и кде должны быть очень разные.
Ну а unix-desktop дополнительный, скажем так универсальный, он должен иметь нейтральный вид 'agent'.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Ситуевина требует дальнейшего изучения, однако. Без твоих наработок, с unix-console кэш хотя и переписывается, но с убитым предварительно кэшом сессия стартует на ~0.5 с. дольше, чем с негрохнутым. Субъективно.
Добавлено (00:23):
А nxproxy в node_start_agent() запуститься шансов нихьт вообще никогда. Сейчас выясняю, какой лишенец этому поспособствовал и когда.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

А вот может дашь мне идею, как табличку соорудить? Дело тривиальное, но теряюсь. Имеется основная таблица, где session_id это PRIMARY KEY. И будет вторая со столбцами: app_name, app_pid, session_id. Уникальные там только пиды, а выборки нужны будут по сочетанию session_id+app_name или по отдельности. Они, соответственно, не уникальны. Вот как бы сделать?
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

dimbor писал:
21.02.2020 14:15
А вот может дашь мне идею, как табличку соорудить? Дело тривиальное, но теряюсь. Имеется основная таблица, где session_id это PRIMARY KEY. И будет вторая со столбцами: app_name, app_pid, session_id. Уникальные там только пиды, а выборки нужны будут по сочетанию session_id+app_name или по отдельности. Они, соответственно, не уникальны. Вот как бы сделать?
А ты что хочешь сделать? Если килять то тебе и пидов достаточно в основной таблице, разделенных запятыми.
Есть разница в каком порядке их убивать?
Ну, предположим, самба и капс отдельно, но можно записать в основную "smb:3345,cups:8764".
Чем не решение?
В последних версиях sqlite3, для подобных случаев есть модуль json, но и без модуля такой вариант прокатит.

И я не понял зачем по отдельности. Так, по session_id, мы очень, очень быстро получаем все до кучи и уже потом разгребаем. Так ИМХО будет быстрее.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

dimbor писал:
21.02.2020 00:19
Ситуевина требует дальнейшего изучения, однако. Без твоих наработок, с unix-console кэш хотя и переписывается, но с убитым предварительно кэшом сессия стартует на ~0.5 с. дольше, чем с негрохнутым. Субъективно.
Тут нужно как-то замерить объем трафика между клиентом и сервером.
Если при обновляемом/статическом кэше он меньше, то это хорошо и это работает.
А вот если больше или такой же, нужно звонить медведям :rolleyes:

Субъективно тут не померять, +- температура по палате :cray:
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Машинерия с башевскими сопроцессами для sqlite проверку практикой не выдерживает. Оно там все асинхронное, блин. И если потомкам дескрипторы протолкнуть получается, то потомки дисовнятся, паршивцы такие. Все бы ничего, но если папа решит завершиться вполне себе по надобности - база гавкается вместе с папой.

Эх, надоть отдельный процесс вешать, и к нему цепляться через пайпы/сокеты какие-нить. Не знаешь, делал кто?
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Djelf писал:
21.02.2020 17:46
А ты что хочешь сделать? Если килять то тебе и пидов достаточно в основной таблице, разделенных запятыми.
Есть разница в каком порядке их убивать?
Да там вариантов дофига и больше: мониторы, тэйлы всякие, пульс возможен, для rdp и vnc загогулины, со своим нравом каждая...
А самое главное, я там сейчас рутлесу сопоставления сделал чтобы сеанс рубился не по таймауту, а по завершению конкретных процессов. По идее, там можно в автомате эти процессы при старте набирать, а по их смерти сеанс пришибать.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

dimbor писал:
21.02.2020 18:08
Эх, надоть отдельный процесс вешать, и к нему цепляться через пайпы/сокеты какие-нить. Не знаешь, делал кто?
Я бы в Mailing list sqlite3 эту проблему бы отпостил, на адекватный запрос там дают достаточно адекватные ответы.
Может ключ какой (не знаю) поможет и т.д. и т.п.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Ага. Припрусь туда, чудик с башем и тщательно сформулированной проблемой. А они мне по формуляру н-на! И правильно, проблема-то не у них, а в текущей архитектуре нашей вундервафли. Ключами никакими не лечится. Лечится переписыванием вундервафли. Причем под наши куцые случаи можно ее переписать хоть сейчас. Но поломать при этом все остальное. Больно она, падла, универсальная.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

Нашел кое что по теме: http://sqlite.1065341.n5.nabble.com/Using-sqlite3-exe-as-a-subprocess-td86667.html#a86721
Разработчики не рекомендуют так использовать, но по ссылке не плохая идея, как ловить ответы sqlite.

Возможно еще ключ -interactive (force interactive I/O) при запуске поможет стабилизировать поведение.

А случаем вот такой скриптик https://github.com/aze2201/bash_SQLite3_Server/blob/master/SQLite.exp не поможет?
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Возможно поможет. Но прежде разберусь с этим хрЕновым механизмом. А то у меня больно по русски накожено; любой результат - цепь взаимокомпенсирующих собственных косяков.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

ssh в зависимости пакета добавь.

P.S. проверил еще и на Ubuntu 18.04.04 - кроме ssh, вроде все без изъяна.
P.P.S. для xrdp бубен потребовался значительно больше :crazy:
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Будет сделано, господин фельдмаршал. Тока чуть попозжа, как допишу следующую итерацию до работоспособного состояния. Бо только начинаю вникать в залежи костылей и граблей. Прикинь, nxserver - собака сутулая, сеанс сильно хитро держит. Если бы не животворящий $BASHPID, дальше бы искал мистические причины там происходящего.

При старте шелом nxserver поднимает свой инстанс для общения с nxnode посредством протокола, дисовнит его, а сам продолжает подслушивать клиента. Как услышит от него "999 bye", запускает netcat на порт прокси. При suspend прокся затыкается, netcat гибнет, и папа чинно завершается следом. А сынок висит, у него одного протопчен канал к ноде с агентом. При restore запущается новый nxserver-папа. Его новый сынок запускает новую ноду, командующую агенту воскреснуть. Вся эта бижутерия завершается, новый папа расчехляет новый netcat.
А первый сын висит и слушает ноду, статусы в базе проставляет.

Пока оставляю без внимания парные ноды с парными мониторами. С ними - позже.

И не надо говорить, что проще преписать к хреням. Надо разобраться, как оно работает. Вон x2гонщики переписали не разобравшись - порнография получилась. ;)

Теперь, по крайней мере, ясно, что это скулайт дох не вовремя.

ЗЫ: Это по большей части мысли вслух, чтобы было что почитать на свалке. И за документирование сойдет. Форум же об Аниме.

ЗЗЫ: И неполиткорректный slave mode был не зря выкинут, потому что открытые дескрипторы между процессами мы передавать не можем, если они не потомки.

ЗЗЗЫ: Оказывается, баш умеет tcp/udp сокеты "из коробки". И уже довольно давно. Даже netcat вроде можно выкинуть. Поизучаю ка я эту хрень.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Как обычно под линуксом, баш умеет сокеты не совсем и в нетрадицонные назначения. Это если обтекаемо формулировать. Обтекаемо.

Зато нашел способ к левым процессам к дескрипторам цепляться. Вполне себе штатный. Правда на /proc/ завязан. Но в нашем стендовом случае это непринципиально. Ведь да?
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

dimbor писал:
26.02.2020 10:55
Как обычно под линуксом, баш умеет сокеты не совсем и в нетрадицонные назначения. Это если обтекаемо формулировать. Обтекаемо.

Зато нашел способ к левым процессам к дескрипторам цепляться. Вполне себе штатный. Правда на /proc/ завязан. Но в нашем стендовом случае это непринципиально. Ведь да?
А чем плохо цепляться через proc? Надеюсь из пространства пользователя? Тогда не страшно.
Ты только не сильно увлекайся то. Заворачивать кучу изменений в одну итерацию - не есть хорошо.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Да все там нормально с пространствами. Дык я стараюсь, чтоб оно хотя б через комит работало. В идеале после каждого.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

Просто оставлю это здесь...

Вот так конкуренты тестят: https://github.com/TurboVNC/turbovnc/issues/95
И в этом они правы на все 100!

Попробовал что-то подобное, видимо и тут можно слегка бустануть.

На тесте +-по палате, это как всегда, потому что нормальных тестов на скорость нет, но на glxgears на стандартных ~2600, а на zlib-ng ~2700 при универсальном линке ADSL.

P.S. zlib-ng, после " ./configure --zlib-compat", подменил либы, там где ldd был на libXcomp.so, но немного красивее было бы в LD_PRELOAD сунуть...

P.P.S. А есть еще реализация из Хрома: https://chromium.googlesource.com/chromium/src/+/HEAD/third_party/zlib
Забираем tgz,распаковываем и кидаем туда CMakeLists.txt
На подмену штатной библиотеки не работает, но в LD_PRELOAD в NXNODE работает (так что слегка гоню волну на оптимизации после jpeg-turbo).
Spoiler
cmake_minimum_required(VERSION 2.8)

set (PROJECT zchrome)
PROJECT( ${PROJECT} )

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Ofast -flto -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast -flto -march=native")
set(CMAKE_LF_FLAGS "${CMAKE_LF_FLAGS} -flto -fuse-linker-plugin")

set(SRCS
adler32.c adler32_simd.c chromeconf.h compress.c cpu_features.c crc_folding.c crc32.c crc32.h crc32_simd.c
deflate.c fill_window_sse.c gzclose.c gzlib.c gzread.c gzwrite.c infback.c inffast.c inflate.c inftrees.c
trees.c uncompr.c zutil.c
)

include_directories (
.
..
)

add_library(${PROJECT} SHARED ${SRCS})
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Я тут тоже двигаюсь. Медленно и печально, как червяк за похоронной процессией. Да еще и оффлайн отвлекает. Но все же постиг цепочку этих безумных форков. И своих добавил. Долбиться в дескрипторы процессов оказалось легче легкого, главное давки не создавать. Вот думаю, чем продолжить: nxnode обскулайтить, или expect похерить. Второе убыстрит, а первое - избавит от тебе не нравящейся ругани в логах об отключении неподключенного. Первое нудное, второе - творческое.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

ИМХО: Отдохни от нудных раскопок, твои творческие решения тоже все ускоряют и ускоряют...
Скоро прогресс-бар в OpenNX можно будет упразднить ;)

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

17:21:18.150318 go2nx: elapsed time 1.00610657s
Кстати, возможно сессии в sqlite стоит разбить по идентичным таблицам по статусу сессии.
Запросы чуток сложнее будут, но и быстрее, при большой базе завершенных сессий.
В принципе достаточно завершенные в отдельную таблицу кинуть... или даже в отдельную базу для производительности.
Завершенные сессии же только в "nxserver --history"
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Имеется текущая проблемка, о которой не отказался услышать бы взвешенное мнение. Сейчас у нас дофигища методов авторизации. USERMODE_AUTHENTICATION с негодованием отметаю. Первую ступень - ключик на сервер иметь, думаю, надо. Дальше идут SSH_AUTHENTICATION и PASSDB_AUTHENTICATION. Раньше думал, SSH - способ растащить nxserver и nxnode по разным хостам (в принципе возможно, но зачем?). Присмотревшись узрел, что он - побочный выкидыш от PASSDB. А этот хендмейд хоть юзерский пароль у себя и проверяет, все равно потом ломится к юзеру по ssh, по ключу, общему для всех юзеров. Собственно, это были причины, по которым остановился когдась на шустром SU. Интуитивно ;)

Теперь про SU_AUTHENTICATION: Так просто от слонопотамного expect не избавиться. (И на tcl весь фриэныкс переписывать не буду - втухну на полгода.) Параноидальному su нужен пароль только в терминал. Можно заменить expect на empty и написать в nxserver один красивый КА на все случаи жизни. Тут я начал читать интернеты, узнал, что su - ископаемое говно мамонта. А вся пацанва уже sudo вовсю. Еще ему можно пароль пропихнуть через ASKPASS вроде. И даже смутно помню, чем-то таким в своей карьере я уже занимался.

Остальные методы можно будет оставить в неприкосновенности при таком раскладе. Но может оказаться, что чего-то я не учел.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

А ты сюда смотрел? https://github.com/Etersoft/nxssh
Мне это вся условная защита "по барабану", изнутри 123 как пароль сойдет, а вот снаружи OpenVPN или (стал переходить на) Wireguard.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Попробуй твикс! Выкинул nxnode-login с expect. Запузырил суровую sudo аутентификацию nx-user. Получился фриэныкс на стероидах. Только под убунтой не проверял, спать хочу. Есть сомнения, что запустится. Весь интернет в судо параметры пихает со слипом после пароля. А у меня без получилось. Вот хочется узнать, не случайно ли. В /etc/sudoers.d файлик дополнился. Без него уж точно не запустится.

Ругань на неправильный пароль пользователя пока не возвращал. По идее, правильно сделать - труд небольшой.
Там сейчас другая беда: когда шар больше одной, толкаются в канале, собаки, и валят агента. Опять придется с локфайлами извращаться.
Djelf писал:
05.03.2020 19:27
А ты сюда смотрел? https://github.com/Etersoft/nxssh
Ну это ж клиентское болото. От номашин в основном. А проблемы негров шерифа не волнуют. На сервере секьюрность блюсти надоть. Нажил много седых волос в разных местах, чтоб не дай Бог не запихнуть пароль в параметры командной строки и все такое.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

dimbor писал:
07.03.2020 09:36
Получился фриэныкс на стероидах. Только под убунтой не проверял, спать хочу. Есть сомнения, что запустится.
Под юбунтой стоит учесть что учетка админа не прописана в группе users. Во всяком случае в 19.04. Добавил, завелось.
Возможно стоит дописать в todo: "nxserver --test user pass"

09:58:28.114105 go2nx: elapsed time 677.619777ms

Да уж, действительно на стероидах :wacko:
Кажется быстрее уже некуда... Меньше секунды! Не ожидал такого :unsure:
Пора проект переименовать в FreeNX_S(teroid)E(dition) :crazy:
dimbor писал:
07.03.2020 09:36
Ругань на неправильный пароль пользователя пока не возвращал. По идее, правильно сделать - труд небольшой.
И на неверного пользователя тоже ругань не забудь.
Spoiler
09:57:05.633953 nxssh: (StdIn) NX> 101 User: addm_not_found
09:57:05.634007 nxssh: (StdOut) Send password: ***
09:57:05.635200 nxssh: (StdIn) NX> 102 Password:
09:57:05.639396 nxssh: (StdIn) NX> 103 Welcome to: addm-VirtualBox user: addm_not_found
И еще косячек, потенциально опасный...
Spoiler
root@addm-VirtualBox:/var/lib/nxserver/home# nxserver --list
NX> 100 NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.23)
NX> 127 Sessions list:

Server Display Username Remote IP Session ID
------ ------- --------------- --------------- --------------------------------
NX> 999 Bye
root@addm-VirtualBox:/var/lib/nxserver/home# nxserver --cleanup
NX> 100 NXSERVER - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.23)
NX> 500 Error: No running sessions found.
NX> 999 Bye
/usr/share/freenx-server/nxfuncs: строка 91: /proc/5991/fd/0: Нет такого файла или каталога
root@addm-VirtualBox:/var/lib/nxserver/home#
dimbor писал:
07.03.2020 09:36
Ну это ж клиентское болото. От номашин в основном.
Ну да, но ты патчи посмотри. И этот клиент значительно более свежий и, насколько я понимаю, поддерживает больше возможностей аутентификации. Правда использовать их получится только в OpenNX.

А у тебя есть комп на Intel? Попробуй cygXcomp_turbo, не без труда, но собрал (это замена для прошлой сборки, тоже со всякими стероидами).
На моем, стареньком AMD64, SSE2 если не медленнее, то точно не быстрее, это давно известный факт, а на Intel может быть разница в 6%.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Djelf писал:
07.03.2020 11:08
Возможно стоит дописать в todo: "nxserver --test user pass"
Так оно туточки. Вот ты и дописал.
Djelf писал:
07.03.2020 11:08
09:58:28.114105 go2nx: elapsed time 677.619777ms

Да уж, действительно на стероидах :wacko:
Кажется быстрее уже некуда... Меньше секунды! Не ожидал такого :unsure:
Пора проект переименовать в FreeNX_S(teroid)E(dition) :crazy:
А давай ка письками померяемся. Твоей вундервафли не имею, поэтому цепляюсь пока opennx с линукса. От первой записи в nxserver.log до последней в nxnode-*.log проходит 0.4 с копейками секунды. А у тебя?
Djelf писал:
07.03.2020 11:08
09:57:05.639396 nxssh: (StdIn) NX> 103 Welcome to: addm-VirtualBox user: addm_not_found
Все будет просто, если клиентский обработчик проглотит после этого "велкам ту" последующее "NX> 404 ERROR: wrong password or login". Нет, тогда ой! - Заново переписывать nxserver, или терять много десятых на предварительном запуске nxnode --check.
Djelf писал:
07.03.2020 11:08
/usr/share/freenx-server/nxfuncs: строка 91: /proc/5991/fd/0: Нет такого файла или каталога
Вот же ж, блин горелый! В баше продолжаются чудеса с командой exit. Если ее запускать в не отвязанном нефоновом чилдренке-сабшелле, она от фазы луны зависит. Когда завершает весь компот как задумано, а иногда - нет. Пока не понял, в чем суть.
Djelf писал:
07.03.2020 11:08
А у тебя есть комп на Intel?
Они у меня все на штеудах исторически, кроме отчужденных. Попробую, но чем попугаи измерять, в душе не чую.
Добавлено (18:50):
Все только начинается, на самом деле: еще пару-тройку десятых можно будет отыграть на конфигах и базе для nxnode. А если хорошо упереться, можно выйти в минус ;)
Добавлено (19:46):
Хотя придумал кажется. Накрайняк буду сначала в судо без чекания пароль загонять. А на втором этапе - без пароля. Там же срок действия можно поставить.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

cleanup поправил вроде.

Ругань на юзер+пасс вернул почти традиционным способом. Ноду лишний раз не пускаю. У sudo есть validate. Его и использовал. Скорость соединения если и проседает, то на децальный децл.

Как уже говорил, есть шальная идея, вместо netcat канал держать башевским встроенным сокетом. Рубить его по SIGPIPE, перекуривать в ожидании - слипом. Может получиться нарост удоев, т.е. стабильности этого самого канала. А может получиться порнография. Впрочем, не привыкать.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

dimbor писал:
07.03.2020 18:20
Они у меня все на штеудах исторически, кроме отчужденных. Попробую, но чем попугаи измерять, в душе не чую.
glxgears на adsl
Но степени сжатия странноваты, честно говоря, modem и isdn упираются в проц и проталкивают <500кбпс, а adsl резко прыгает вперед и у меня упирается уже в канал 1.7мбпс. Как то не очень понятна и логична эта стратегия...

P.S. Исправления сработали. Как думаешь, когда на продакшн можно будет запускать?
Ну, я в принципе уже запустил, но как резерв для xRDP и для тощих каналов, но там контора совсем новая и пользоваться этим (пока?) будет полтора землекопа.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

Погонял glxgears. Тупой вопрос: откель ты биты в секунду берешь? FPS на размеры картинки умножаешь по секретной формуле? Пока заметил только просадку этого самого FPS на треть с новой библиотекой в режиме modem. В остальных - однофигственно. Везде - пик на adsl, да. Или тесты нужны с настоящего клиента, в смысле со своим невиртуальным процом и дисплеем?

Продакшен, символизируемый 1.0.1 в версии пакетов, у себя хочу приурочить к окончательному устаканиванию архитектуры. Для этого надоть сделать sqlite базу для юзера, далее подключить таки конфиги. Я там реально много кода написал и все задействовать его не могу никак. Танцор плохой, ну хоть пока к отцовству нет претензий.

Все цепляется одно за другое: к ноде конфиги цеплять смысла не имеет, пока оно само в каталогах ковыряется. А там можно сделать красиво и коротко. Вот сейчас вроде разобрался с универсальным запуском/завершением своей dbe для sqlite. Теперь буду делать usessions.sq3 для юзера. Ты мне лучше все-таки расскажи про правильную табличку session_id, app_name, pid. А то я там ща понавояю. А оно реально надо. Больно вариантов много - столбцов на все не хватит.

С несколькими шарами еще затык этот: сейчас можно воткнуть костыль, который потом переписывать. А там и так много переписывать.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

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

Сообщение Djelf »

В диспетчере задач бпс примерно видно. Точная цифра не так важна.
Видимо, да, на реальном надо тестить. Хотя нынче эти оптимизации распаковки zlib невооруженным взглядом не видны.
Хм, просадка на modem с новой библиотекой? Интересно, но не понятно. Ну да и черт с ним...

Если ты собрался все таки делать таблицу с session_id, app_name, pid, то нужно будет сначала sessions переделать, добавить туда числовой столбец id и session_id связывать по нему, иначе слишком жирно получится, текстовой session_id великоват.
А в остальном без разницы что ты туда напихаешь. Это все потребуется при закрытии сессии, а там скорость не особенно важна.
И sqlite не dbf, формат базы очень экономно расходует место - чего нет того в базе считай и нет, так что можешь спокойно делать столько колонок сколько потребуется...
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

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

Сообщение dimbor »

О, грац за идею с числовым id. Только ничего не надо переделывать, оно еще не сделано вообще. sessions - общая на всех, ею рулит nxserver.

У каждого юзера будет usessions, и туда переедет большая часть бардака из каталогов .nx/C-* За исключением файлов, нужных агенту. А id в базе будет пидом ноды, которая агент держит. Она там не перезапускается даже при restore. А индекс в табличке пидов наверное составной id+app_name. Или только по id. Или вообще никакого. На каждый сеанс будет ну не больше десятка приложений. Одновременных сеансов от юзера на практике моих мульти-бухгалтеров - не больше трех. По завершению сеанса все строки вытираются. И что там индексировать?
Спасибо сказали: