Uživatelské nástroje

Nástroje pro tento web


firebird:fb_windows_kill

Toto je starší verze dokumentu!


Blokování licencí

Po pádu obisu (např. z důvodu přerušení síťového připojení) mohou zůstat na serveru blokovány obis licence běžícími firebird procesy. Standardní timeout spojení na windows je 2 hodiny - po této době se proces automaticky zabije. Tuto dobu je možné zkrátit úpravou registrů pomocí nastavení TCP KeepAliveTime.

Nastavení doby detekce ukončeného klientského spojení

Doba ukončení spojení = KeepAliveTime + TcpMaxDataRetransmissions*KeepAliveInterval (defaultne 2hod)

Windows

V registry \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\ (doby v minisekundach)

 KeepAliveTime 7200000 -> 60000  (2hod -> 1min)
 KeepAliveInterval 1000 -> 10000 (1sec -> 10 sec)
 TcpMaxDataRetransmissions 5

Firebird

tail /proc/sys/net/ipv4/tcp_keepalive_* (doby v sekundach)

/etc/sysctl.conf

net.ipv4.tcp_keepalive_time=60
net.ipv4.tcp_keepalive_intvl=10
net.ipv4.tcp_keepalive_probes=5
sysctl -a | grep tcp_keepalive
sysctl -p /etc/sysctl.conf

Ukončení procesů Firebirdu na windows

Manuální zabití Firebird procesů, které blokují licence je možné s pomocí TCPView od sysinternals. V licencích obisu se zjistí IP, které licence blokuje a v TCPView se zabije proces firebirdu, který má na toto IP spojení. Poté už půjde v licencích tyto konexe vymazat.

Skript na zabití procesů firebird vybrané stanice kill_fb.sh

#! /bin/bash
#pomoci SSH (Putty) se prihlasit na server jako uzivatel ktery ma umoznene sudo na lsof a kill
#a spustit tento script
 
# IP adresa volajiciho pocitace
CLIENT_IP=$(echo $SSH_CLIENT | awk '{print $1;}') || exit 1;
 
FB_NAME="fb_inet_server"
OPEN_DB="licence.fdb"
for P in $(pgrep $FB_NAME); do 
  # grepujeme pres vsechny otevrene soubory daneho procesu, hledame ten, ktery otevira licence a zaroven ma socket na IP adresu klienta. Grepujeme pre
  if sudo lsof -n -p $P 2>/dev/null | grep -z "$OPEN_DB" | grep -q "$CLIENT_IP"; then 
    echo "Found process $P $FB_NAME holding DB $OPEN_DB and communicating with $CLIENT_IP, killing the process"
    sudo kill $P
    exit 0
  fi
done
 
echo "No process $FB_NAME holding DB $OPEN_DB and communicating with $CLIENT_IP found"
exit 1
firebird/fb_windows_kill.1352455223.txt.gz · Poslední úprava: 2012/11/09 10:00 autor: Karel Petrů