борьба с сессиями с "потеряным" терминалом

Обсуждение вопросов по администрированию СУБД Progress OpenEdge
dwp
Старожил
Сообщения: 30
Зарегистрирован: 14 ноя 2007, 12:15

борьба с сессиями с "потеряным" терминалом

Сообщение dwp » 01 окт 2008, 07:54


Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: борьба с сессиями с "потеряным" терминалом

Сообщение George » 01 окт 2008, 09:37


van
Модератор
Сообщения: 407
Зарегистрирован: 12 июл 2001, 03:00

Сообщение van » 01 окт 2008, 09:53


Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Сообщение George » 01 окт 2008, 10:16

В том топике описывается несколько другая ситуация. Если дело именно в разрыве соединения между клиентской машиной и сервером, то KeepAliveTimeout - это решение проблемы. Насколько мне известно на большинстве платформ его значение можно уменьшить только до 5 минут. Это единственное "несовершенство" данного решения, но оно имеет естественную природу - как иначе отличить временные задержки в сети, от полной потери соединения.

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: борьба с сессиями с "потеряным" терминалом

Сообщение George » 01 окт 2008, 10:23


Аватара пользователя
dmitri
Старожил
Сообщения: 1016
Зарегистрирован: 04 авг 2005, 16:19
Откуда: Pennsylvania, USA

Сообщение dmitri » 01 окт 2008, 19:39

Dmitri Levin and

alex
Старожил
Сообщения: 38
Зарегистрирован: 13 июл 2001, 03:00

Сообщение alex » 02 окт 2008, 06:16


Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Сообщение George » 02 окт 2008, 08:29


dwp
Старожил
Сообщения: 30
Зарегистрирован: 14 ноя 2007, 12:15

Сообщение dwp » 02 окт 2008, 09:59


Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Сообщение George » 02 окт 2008, 14:02


rey
Новичок
Сообщения: 14
Зарегистрирован: 25 мар 2008, 11:55
Откуда: г. Чебоксары

Сообщение rey » 02 окт 2008, 15:41


Аватара пользователя
dmitri
Старожил
Сообщения: 1016
Зарегистрирован: 04 авг 2005, 16:19
Откуда: Pennsylvania, USA

Сообщение dmitri » 02 окт 2008, 17:16

Dmitri Levin and

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Сообщение George » 02 окт 2008, 22:47

А не проще ли просто не запускать новую сессию, если пользователь исчерпал свою квоту? Т.е. подключились к базе, выяснили что число соединений данного пользователя превысило лимит, отключились от базы и выдали на экран пользователю добрый совет закрыть старые сессии прежде чем запускать новые.

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

Ну и раз уж речь зашла о "политике", то стоит написать и запускать фоновый процесс DrKevorkian, который периодически проверял бы наличие в базе соединений с _Connect-Disconnect eq 1, выяснял их текущую активность и стучал бы о них админу для принятия решения об "эвтаназии".

dwp
Старожил
Сообщения: 30
Зарегистрирован: 14 ноя 2007, 12:15

Сообщение dwp » 03 окт 2008, 06:07

отвечаю всем по порядку:
1.мне нет необходимости "искусственно"- скриптами ограничивать
пользователя количеством сессий - так как у меня отлично с этим справляется приложение. Вопрос в том что это не решение проблемы
общее количество сессий ограничено и дефицит огромный, так что я
не могу "разбрасываться" сессиями направо и налево
2. криминального действительно ничего нет в кресте.
и в подавляющем числе случаем 95% все отрабатывает корректно
посылается HANGUP и сессия закрывается.
дело как раз в этих "чертовых" 5% . то есть иногда сессия не умирает а продолжает гипер-активную жизнь и отжирать ресурсы
а что еще того хуже продолжает блокировку записей.....
3. с tcp keepalive time все нормально в принципе (попробовал уже)
поставил такие значения(пока...)
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_time = 120

с ними стало значительно лучше чем со значениями по умочанию.
думаю это снизит количество убиваемых мной сессий до устраиваемого меня значения:) и это мне будет достаточно

4. а с "крестами" пусть пока так все и остается
с пользователями периодически проводятся консультации
что закрытие сессии крестом не самый лучший способ выхода
из положения если вы считаете что ваш терминал висит.
это скорей самый крайний способ.....


спасибо всем за помощь

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Сообщение George » 03 окт 2008, 08:20