The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Xserver при обрыве соединения с клиентом требуется закрыть окно"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (X Window, GUI / Linux)
Изначальное сообщение [ Отслеживать ]

"Xserver при обрыве соединения с клиентом требуется закрыть окно"  +/
Сообщение от Михаил (??), 15-Мрт-19, 23:16 
Здравствуйте, прошу прощения, я в данной области чайник, честно, и так и сяк пытался формулировать запросы, но ссылки ведут в базовые темы про xhost+ которые нужного вопроса не поднимают.

И так, имеется АСУТП(всё на линуксах), есть низовая система(вернее несколько), есть пульт управления комп+клава+монитор. Низовые системы выводят свои окна на этот Xserver.
Проще говоря за Xserver "сидит/смотрит" оператор, на нём вызывается xhost + 192... нужные клиенты(вопросы безопасности не рассматриваем, все кабельные связи контролируются).

Система уже сделана, так как есть, и всё работает, есть одно неприятное "НО". В случае "нештатного" обрыва соединения с клиентом (например вырвать Ethernet кабель), то на рабочем месте оператора окно просто перестаёт меняться, это в ряде случаев вводит в заблуждение(т.к. сложно понять актуальные данные выводятся или по факту всё давно не работает а картинка просто зависла).

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

Подскажите пожалуйста, наверняка есть какое-то подобие keepalive для такой ситуации.

Метод пинговать низовые системы и при отсутствии связи давать "xhost - адрес системы" и возвращать при возобновлении связи - работает(во всяком случае если отрывать кабели), но, думаю, что есть нормальное решение проблемы с контролем наличия данных именно по X, тем более что там постоянно сыпется много пакетов.

И да, я в этом чайник, указывайте пожалуйста подробно где именно в настройках каких конфигов что указывать. В man для xserver написано про ключ -to (sets default connection timeout in seconds.), но где его можно попробовать установить я понять не могу :-(

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Xserver при обрыве соединения с клиентом требуется закрыть окно"  +/
Сообщение от pavel_simple (ok), 17-Мрт-19, 14:03 
>[оверквотинг удален]
> Подскажите пожалуйста, наверняка есть какое-то подобие keepalive для такой ситуации.
> Метод пинговать низовые системы и при отсутствии связи давать "xhost - адрес
> системы" и возвращать при возобновлении связи - работает(во всяком случае если
> отрывать кабели), но, думаю, что есть нормальное решение проблемы с контролем
> наличия данных именно по X, тем более что там постоянно сыпется
> много пакетов.
> И да, я в этом чайник, указывайте пожалуйста подробно где именно в
> настройках каких конфигов что указывать. В man для xserver написано про
> ключ -to (sets default connection timeout in seconds.), но где его
> можно попробовать установить я понять не могу :-(

учитывая то, что используется честый X без проброса через ssh то нужно тюнить tcp стэк linux

начать лучше от сюда

net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200

этj дефолт на моей машине и первое нужно сильно уменьшать до секунды, а второе до 2 и далее тестить и крутить

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Xserver при обрыве соединения с клиентом требуется закрыть окно"  +/
Сообщение от Михаил (??), 17-Мрт-19, 18:13 

>  нужно тюнить tcp стэк linux

Про тсп, третья цифра отвечает за начало проверки соединения на разрыв, и если про неё забыть, то "кипаливиться" соединение начнёт только через два часа (разумеется если программа не переопределила эти настройки для своего сокета).

Только эти настройки не помогают, у меня обмен идёт по UDP(tcpdump показывает), так что контроль разрыва соединения не на стороне OS, а дело xservera.

Я хочу узнать есть ли у самого xserver контроль разрыва соединений, и где именно он настраивается.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Xserver при обрыве соединения с клиентом требуется закрыть окно"  +/
Сообщение от pavel_simple (ok), 18-Мрт-19, 15:14 
>>  нужно тюнить tcp стэк linux
> Про тсп, третья цифра отвечает за начало проверки соединения на разрыв, и
> если про неё забыть, то "кипаливиться" соединение начнёт только через два
> часа (разумеется если программа не переопределила эти настройки для своего сокета).
> Только эти настройки не помогают, у меня обмен идёт по UDP(tcpdump показывает),
> так что контроль разрыва соединения не на стороне OS, а дело
> xservera.
> Я хочу узнать есть ли у самого xserver контроль разрыва соединений, и
> где именно он настраивается.

ну значит вы не полностью описываете вашу среду, и нужно -listen tcp, потому-что X'ы умеют работать через tcp (возможно придётся через МСЭ прикрыть udp)
а про третий параметр это вы верно озвучили и да, совершенно верно, это будет действовать если приложение не выставляет сокет опции самостоятельно. Если ваши иксы выставляют опции, то возможно придётся накорябать враппер на setsockopt через ld_preload или использовать для этого случая socat в виде
socat -d -d TCP-LISTEN:6000,fork,bind=myexternalip UNIX-CONNECT:/tmp/.X11-unix/X0

socat позволяет выставлять опции tcp из параметров ком. строки

ну, и если-уж дело дошло до врапперов, можно написать враппер который бы робил на udp и контролировал обмен, но там будет много всего весёлого

третий вариант, запускать придожения на машинах локально, например через tightvncserver/xvfb+x11vnc и экпортировать их через vnc или другой протокол передачи картинки/эвентов


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Xserver при обрыве соединения с клиентом требуется закрыть окно"  +/
Сообщение от Михаил (??), 18-Мрт-19, 16:44 
Всётаки это у меня косоглазие, сидят иксы на тсп 6000, но дефолтные настройки не помогают, значит они их переопределяют.
Не всегда можно снести железную дорогу и проложить трубу. Менять принцип связи с клиентами нельзя.

Иксы старая штука, ещё модемы помнит, должно быть решение проще. В крайнем случае могу xhost ом отрубать клиентов с кем пинг пропал.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Xserver при обрыве соединения с клиентом требуется закрыть окно"  +/
Сообщение от pavel_simple (ok), 18-Мрт-19, 18:31 
> Всётаки это у меня косоглазие, сидят иксы на тсп 6000, но дефолтные
> настройки не помогают, значит они их переопределяют.
> Не всегда можно снести железную дорогу и проложить трубу. Менять принцип связи
> с клиентами нельзя.
> Иксы старая штука, ещё модемы помнит, должно быть решение проще. В крайнем
> случае могу xhost ом отрубать клиентов с кем пинг пропал.

те иксы которые помнят мопеды, а точнее ПО для иксов уже давно почило, сейчас тулкиты отдают иксам битмапы, включая текст, поэтому от исков в современных приложениях толку ноль целых xер десятых

значит socat с опциями отпадает.остаётся LD_PRELOAD и контроль програмный над опциями сокета
начать можно от сюда
https://github.com/yongboy/bindp

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Xserver при обрыве соединения с клиентом требуется закрыть окно"  +/
Сообщение от pavel_simple (ok), 18-Мрт-19, 18:34 
но я бы stace'ом/ltrace'ом убедился что иксы выставляют опции, чёт сомневаюсь, ну, на крайняк, можно и исходники поправить малёнько, компилячить только долго, иксы тот ещё мегакомбайн
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2019 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor