Re: перестают поступать события

2011-11-10 Пенетрантность Alexey Popov

Alexey Popov wrote:

Есть FB2.0 SS и служба работающая на этом же компе. Служба подписывается 
на события и слушает их. Всё это работает много дней. В какой то момент 
перестают доходить события до службы. Для проверки этой гипотезы сделано 
тестовое событие, которые регулярно по таймеру генерируется самой 
службой и отслеживается появление соответствующего уведомления. И 
действительно, события перестают доходить. В чём может быть причина?

Ранее такого вроде бы не наблюдалось.

Чисто технически, внутри там вроде дополнительно TCP соединение, по 
которому передаются события. Предположим, что оно по каким то причинам 
протухло... Кто вернёт ошибку в этом случае?



Итак, после замены IP на 127.0.0.1 в течении ~20 суток непрерывной 
работы проблема пока не появляется.


Архитектурная проблема в API что нет способа определить отвал соединения 
для эвентов при асинхронной работе с ними.






Re: перестают поступать события

2011-10-25 Пенетрантность Alexey Popov

Vlad Khorsun wrote:


   В логе клиента, скорее всего, будет сообщение об обрыве коннекта.
Не проверял.


1. А что клиент пишет что то в лог?

2. Если он просто лежит в system, то куда уйдёт лог?



Re: перестают поступать события

2011-10-25 Пенетрантность Vlad Khorsun

Alexey Popov ...

Vlad Khorsun wrote:


   В логе клиента, скорее всего, будет сообщение об обрыве коннекта.
Не проверял.


1. А что клиент пишет что то в лог?


   Открытие ? :-D


2. Если он просто лежит в system, то куда уйдёт лог?


   На каталог выше fbclient.dll, как обычно

--
Хорсун Влад 





Re: перестают поступать события

2011-10-24 Пенетрантность Vlad Khorsun

Alexey Popov ...
Всётаки остаётся неясным вопрос о том как себя ведёт асинхронное уведомление о событиях если по каким либо причинам соединение для 
событий накрылось. Возможна ли передача ошибки потребителю?


   В логе клиента, скорее всего, будет сообщение об обрыве коннекта.
Не проверял.

--
Хорсун Влад 





Re: перестают поступать события

2011-10-18 Пенетрантность Alexey Popov


Arioch wrote:

1) даже в этом случае, чем дальше, тем больше вероятность, что уже  
случилось
2) запусти, действительно, регулярно повторяющийся ивент. При каком-то  
постоянно происходящем запросе, чтобы раз в несколько минут посылался.  
Перестал посылаться - значит пора переподключаться.


Так у меня и сделано. Только пишется в лог о проблеме.
Ещё сейчас для надёжности вставил проверку кодов возврата функции
isc_que_events и PostMessage, которые используются при обработки 
события. А то мало что...


Ещё вопрос как делать передподключение. Достаточно ли будет
пары: isc_cancel_events+isc_que_events или целиком реконнект делать.
Сейчас коннект висит бесконечно.


Ну под виндой я бы посмотрел в сторону SysInternals
Там были программы типа TDI Monitor и TCP Lister


[..]

Да, это может прояснить ситуацию, но проблема что непосредственного 
доступа к серверу я не имею - он слишком далеко.


Второй момент тут в том, что служба и сервер на одном компе работают, 
хотя протокол TCP используется для единообразия.

Проблемы с сетью по идее не должны влиять в этом случае.





Re: перестают поступать события

2011-10-18 Пенетрантность Alexey Popov

Oleg Matveyev wrote:


Есть такая проблема, причем и на 2.0.6
Аналогично - висит служба, которая до получения события не делает ничего.
Но очень желательно не пропускать ни одного события, потому что при 
получении - надо сделать вычисления и положить в БД результат.

Правда, у меня в качестве клиента используется .Net Provider.


Клиент и база у тебя на одном компе?


Я понимал, что конечно - для эвента есть отдельное TCP-соединение.


Да, там отдельное соединие, причём на клиенте ещё создаётся внутри api 
допольнительный поток.




Re: перестают поступать события

2011-10-18 Пенетрантность Oleg Matveyev

Клиент и база у тебя на одном компе?


Теперь на одном.
И там же, на сервере - есть другая служба, которая может событие отправить. 
(но не только она событие отправляет)






Re: перестают поступать события

2011-10-18 Пенетрантность Oleg Matveyev

Ещё вопрос как делать передподключение. Достаточно ли будет
пары: isc_cancel_events+isc_que_events или целиком реконнект делать.
Сейчас коннект висит бесконечно.


недостаточно.
выделенное TCP-соединение для всех эвентов создается один раз. 





Re: перестают поступать события

2011-10-18 Пенетрантность Alexey Popov

Oleg Matveyev wrote:


Клиент и база у тебя на одном компе?


Теперь на одном.


И всёравно события отваливаются ?



Re: перестают поступать события

2011-10-18 Пенетрантность Oleg Matveyev

Клиент и база у тебя на одном компе?


Теперь на одном.


И всёравно события отваливаются ?


После переноса сервиса на сервер БД конфиг (приложения) остался прежним,
и строка коннекта была в виде 192.168.x.x:base
При отключении питания коммутатора - такой коннект отваливался.


Не очень давно поменял строку коннекта на 127.0.0.1:base, но с тех пор не 
было отключений.
Так что пока жду результатов. 





Re: перестают поступать события

2011-10-18 Пенетрантность Alexey Popov

Oleg Matveyev wrote:


После переноса сервиса на сервер БД конфиг (приложения) остался прежним,
и строка коннекта была в виде 192.168.x.x:base
При отключении питания коммутатора - такой коннект отваливался.


Ого, спасибо, ценная информация! У меня тоже IP используется внешний!
Но у меня БД-шный коннект не отваливается.

Не очень давно поменял строку коннекта на 127.0.0.1:base, но с тех пор 
не было отключений.

Так что пока жду результатов.


Тут кстати можно ещё попробовать по локальному протоколу... Интересно 
как там эвенты внутри устроены?




Re: перестают поступать события

2011-10-18 Пенетрантность Oleg Matveyev
Тут кстати можно ещё попробовать по локальному протоколу... Интересно как 
там эвенты внутри устроены?


не в курсе, у меня все коннекты TCP, и через FBScanner. даже в 127.0.0.1
что бы видно было кто, откуда и как давно неработает 





Re: перестают поступать события

2011-10-17 Пенетрантность Khorsun Vlad

Alexey Popov ...

Есть FB2.0


   Нет такой версии

--
Хорсун Влад 





Re: перестают поступать события

2011-10-17 Пенетрантность Alexey Popov

Khorsun Vlad wrote:


Есть FB2.0


   Нет такой версии


А вот и есть! 2.0.3.12981



Re: перестают поступать события

2011-10-17 Пенетрантность Arioch
В письме от Mon, 17 Oct 2011 16:07:29 +0400, Alexey Popov  
a...@novgorod.net сообщал:


Есть FB2.0 SS и служба работающая на этом же компе. Служба подписывается  
на события и слушает их. Всё это работает много дней. В какой то момент  
перестают доходить события до службы. Для проверки этой гипотезы сделано



а тупо раз в сутки переподключаться? ;-)

запусть какой-нибудь дампер и посмотреть
1) какие есть соедuнения между службой и сервером
2) что по ним проходит, насколько помню для событий зaводили отдельное  
TCP-соединение, не связанноe с данными
По крайней мере увидишь, это сервер не отправляет сообщение, или служба не  
принимает.



--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: перестают поступать события

2011-10-17 Пенетрантность Alexey Popov

Arioch wrote:


а тупо раз в сутки переподключаться? ;-)


Если это накапливающаяся проблема.
Если же это происходит случайно, то не поможет.


запусть какой-нибудь дампер и посмотреть
1) какие есть соедuнения между службой и сервером
2) что по ним проходит, насколько помню для событий зaводили отдельное  
TCP-соединение, не связанноe с данными
По крайней мере увидишь, это сервер не отправляет сообщение, или служба 
не  принимает.


Конкретно сервер врядли виноват - проблема слишком заметна и появляется 
регулярно. Но как диагносцировать детальнее - х.з.




Re: перестают поступать события

2011-10-17 Пенетрантность Khorsun Vlad

Alexey Popov ...

Khorsun Vlad wrote:


Есть FB2.0


   Нет такой версии


А вот и есть! 2.0.3.12981


   Такая есть. Но есть и 2.0.6, в которой что-то могло быть исправлено.
Есть релизноты и трекер для поиска этого чего-то.

--
Хорсун Влад 





Re: перестают поступать события

2011-10-17 Пенетрантность Alexey Popov

Khorsun Vlad wrote:


   Такая есть. Но есть и 2.0.6, в которой что-то могло быть исправлено.
Есть релизноты и трекер для поиска этого чего-то.


На круглосуточной боевой базе стрёмно как то обновление делать.
Проблема наблюдается на одном инстансе из многих.



Re: перестают поступать события

2011-10-17 Пенетрантность Khorsun Vlad

Alexey Popov ...

Khorsun Vlad wrote:


   Такая есть. Но есть и 2.0.6, в которой что-то могло быть исправлено.
Есть релизноты и трекер для поиска этого чего-то.


На круглосуточной боевой базе стрёмно как то обновление делать.
Проблема наблюдается на одном инстансе из многих.


   Тогда чего же ты хочешь ? Чтобы оно само прошло ? :-D

--
Хорсун Влад

PS Ты багу-то хоть в трекере нашёл ? А искал ?
PPS Я не искал. Но с ивентами многое исправлялось. 





Re: перестают поступать события

2011-10-17 Пенетрантность Alexey Popov

Khorsun Vlad wrote:


   Тогда чего же ты хочешь ? Чтобы оно само прошло ? :-D


Может косяк ещё где... Может даже и в клиенте.


PS Ты багу-то хоть в трекере нашёл ? А искал ?


Нотах смотрел - похожего ничего нет.


PPS Я не искал. Но с ивентами многое исправлялось.


Так может лучше на 2.1 перейти, а не на 2.0.6 ?



Re: перестают поступать события

2011-10-17 Пенетрантность Arioch
В письме от Mon, 17 Oct 2011 17:13:05 +0400, Alexey Popov  
a...@novgorod.net сообщал:



Если это накапливающаяся проблема.
Если же это происходит случайно, то не поможет.


1) даже в этом случае, чем дальше, тем больше вероятность, что уже  
случилось
2) запусти, действительно, регулярно повторяющийся ивент. При каком-то  
постоянно происходящем запросе, чтобы раз в несколько минут посылался.  
Перестал посылаться - значит пора переподключаться.



а вообще часто этот ивент отправляется ?

не может там соединение просто иногда от бездействия отваливаться ?



запусть какой-нибудь дампер и посмотреть
1) какие есть соедuнения между службой и сервером
2) что по ним проходит, насколько помню для событий зaводили отдельное   
TCP-соединение, не связанноe с данными
По крайней мере увидишь, это сервер не отправляет сообщение, или служба  
не  принимает.


Конкретно сервер врядли виноват - проблема слишком заметна и появляется  
регулярно. Но как диагносцировать детальнее - х.з.


Ну под виндой я бы посмотрел в сторону SysInternals
Там были программы типа TDI Monitor и TCP Lister

Сначала на работающей программе, сразу после запуска
1) какие вообще есть соединения между службой и сервером, сколько их,  
порты на обоих концах и т.д.
2) по возможности - в каких случая по каким соединениям ходят данные. Я,  
возможно неправильно, помню что будет одно соединение для ивентов, и ещё  
для данных одно или два - смотря как программа написана.
3) если удастся выделить ивенты - записать содержимое пакетов в норме в  
обе стороны - тут щас девелоперы заржут, они эти структуры и так знают, и  
наверное их не так трудно найти в исходниках... но на пальцах можно просто  
HEX'ы записать
3.1) если не удастся поймать отдельное соединение только для ивентов - вот  
тогда плохо. Едва ли парсер внутренних протоколов FB есть дял каких-нибудь  
FireShark. Хотя Jaybird вроде по внутренним протоволам работает, на его  
основе можно наверное бы было перехватчик+парсер делать, но никому скоре  
всего не нужно


Потом для интереса проверил бы то же самое на работающей конфигурации  
сутки спустя. Просто посмотреть те же соединения, или переоткрывались.


И наконец после отвала ивентов ещё раз сделал бы то же самое.
И сравнил.

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: перестают поступать события

2011-10-17 Пенетрантность Oleg Matveyev
Есть FB2.0 SS и служба работающая на этом же компе. Служба подписывается 
на события и слушает их. Всё это работает много дней. В какой то момент 
перестают доходить события до службы.


Есть такая проблема, причем и на 2.0.6
Аналогично - висит служба, которая до получения события не делает ничего.
Но очень желательно не пропускать ни одного события, потому что при 
получении - надо сделать вычисления и положить в БД результат.

Правда, у меня в качестве клиента используется .Net Provider.

В моем случае проблема связана с потерей TCP-соединения, что в общем и 
понятно.


Я понимал, что конечно - для эвента есть отдельное TCP-соединение.
Но сделал предположение: если обрыв происходит не по вине железа (с 99,999% 
вероятностью) то оборвутся оба соединения - и для комманд, и для эвента.
Поэтому недолго думая, кроме потока, ждущего эвент - периодически выполняю в 
основном соединении какую-то операцию, по возможности самую малозатратную. 
Но которая точно уйдет на сервер.
Сначала думал делать Allocate Statement/Drop statement. Но в протоколе 2.1 
такой набор к серверу FB отправлен не будет.

Поэтому остановился на паре начать транзакцию/commit.
Если операция прошла с ошибкой - немедленный reconnect с перерегистрацией 
эвента.


P.S. в 2.0.6 есть баг в эвентах - после обрыва коннекта сокет эвента 
остается открытым бесконечно.

keeplalive настроен. (и в основном коннекте такое не наблюдается)
Но Влад мне тогда сказал что есть и более свежие версии. :-)