Wiszące sesje

0

Witam. Mam program w Delphi łączący się z bazą FireBird. Gdy zabiję program to na niektórych serwerach zostaje mi na firebidzie aktywna sesja i mi mieli...

Większość serwerów po zabiciu procesu, zabija również proces na firebirdzie. Ktoś może miał coś podobnego.

0

Może napiszę bardziej szczegółowo.

Odpalam program w Delphi z połączeniem z bazą FireBird. Pod Delphim odpalam długo trwającą operację bazodanową pod FireBirdem. Zabijam program napisany w Delphi (np bo się pomyliłem i za mało parametrów nastawiłem i nie chcę czekać).
Niestety FireBird dalej muli zapytanie...

Podobnie pod IBExpertem, odpalam długo trwające zapytanies, zabijam IBExpert, a serwer Firebird dalej muli
.
Dzieje się to na Windowsie z połączeniem localhost. Dodam, że jak połączę się przez protokuł TCPIP to Firebird ładnie zakończa działanie z zabitym programem.

Natomiast łącząc się z bazą pod Linuxem, FireBird nie kończy działania, proces fb_inet_server wisi i mieli, mieli, mieli...

Jakieś propozycje jak to rozwiązać bezpiecznie?

Chciałbym aby po takim zabiciu programu serwer ładnie kończył działanie.

0

Hmm dawno nie robiłem z Firebird ale sprawdź czy w pliku konfiguracyjnym nie ma opcji by pozwalać tylko na połączenia po TCP - wtedy rozwiążesz swój problem.

0
Hostel napisał(a):

Hmm dawno nie robiłem z Firebird ale sprawdź czy w pliku konfiguracyjnym nie ma opcji by pozwalać tylko na połączenia po TCP - wtedy rozwiążesz swój problem.

tak ale z linuchem się łączy przez TCPIP i też jest problem...

0
michal_l_l_l napisał(a):

tak ale z linuchem się łączy przez TCPIP i też jest problem...

Linuchem - chyba dlatego masz problem bo po macoszemu traktujesz narzędzia którymi pracujesz.

Może info z tego postu pomoże:
http://firebird.1100200.n4.nabble.com/how-to-clear-dead-transactions-td1125666.html

0
Hostel napisał(a):
michal_l_l_l napisał(a):

tak ale z linuchem się łączy przez TCPIP i też jest problem...

Linuchem - chyba dlatego masz problem bo po macoszemu traktujesz narzędzia którymi pracujesz.

Może info z tego postu pomoże:
http://firebird.1100200.n4.nabble.com/how-to-clear-dead-transactions-td1125666.html

Już patrzałem, ale nie działa to jak taki pusty proces muli.

Może ktoś się orientuje czy bezpieczne jest stosowanie

DELETE FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID = 4343;

??

0

Cytat z pliku konfiguracyjnego Firebird - może tutaj znajdziesz rozwiązanie:

#
# Seconds to wait on a silent client connection before the server sends
# dummy packets to request acknowledgment.
#
# NOTE. This option may hang or crash Windows NT4 or Windows 2000 pre SP3 
# on the client side as explained here: 
# http://support.microsoft.com/default.aspx?kbid=296265.
# or may not prevent eventual inactive client disconnection for other OS.
#
# Normally, Firebird uses SO_KEEPALIVE socket option to keep track of
# active connections. If you do not like default 2-hour keepalive timeout
# then adjust your server OS settings appropriately. On UNIX-like OS's,
# modify contents of /proc/sys/net/ipv4/tcp_keepalive_*. On Windows,
# follow instrutions of this article:
# http://support.microsoft.com/default.aspx?kbid=140325
#
# Type: integer
#
#DummyPacketInterval = 0

1 użytkowników online, w tym zalogowanych: 0, gości: 1