Uživatelské nástroje

Nástroje pro tento web


firebird:fb_windows_kill

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
firebird:fb_windows_kill [2009/06/24 09:48] – vytvořeno pavelfirebird:fb_windows_kill [2019/09/03 11:42] (aktuální) – [Nastavení doby detekce ukončeného klientského spojení] Petr Kristan
Řádek 1: Řádek 1:
-===== Zabíjení procesů Firebirdu na windows =====+===== 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í  [[http://technet.microsoft.com/en-us/library/cc782936(WS.10).aspx|nastavení TCP KeepAliveTime]]. 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í  [[http://technet.microsoft.com/en-us/library/cc782936(WS.10).aspx|nastavení TCP KeepAliveTime]].
  
-Manuální zabití mrtvých +==== Nastavení doby detekce ukončeného klientského spojení ==== 
 + 
 +Doba ukončení spojení = KeepAliveTime + TcpMaxDataRetransmissions*KeepAliveInterval (defaultne 2hod) 
 + 
 +=== Windows ===  
 + 
 +[[https://technet.microsoft.com/en-us/library/dd349797(v=ws.10).aspx]] 
 + 
 +V registry \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\ (doby v minisekundach) 
 +<code> 
 + KeepAliveTime 7200000 -> 60000  (2hod -> 1min) 
 + KeepAliveInterval 1000 -> 10000 (1sec -> 10 sec) 
 + TcpMaxDataRetransmissions 5 
 +</code> 
 + 
 +=== Linux === 
 + 
 +/etc/sysctl.d/local.conf (ubuntu: /etc/sysctl.d/60-local.conf) 
 +<code> 
 +net.ipv4.tcp_keepalive_time=60 
 +net.ipv4.tcp_keepalive_intvl=10 
 +net.ipv4.tcp_keepalive_probes=5 
 +</code> 
 + 
 +aktivace 
 + 
 +<code bash> 
 +sysctl -f --system 
 +</code> 
 + 
 +Aktualni hodnoty v kernelu 
 +<code bash> 
 +tail /proc/sys/net/ipv4/tcp_keepalive_*   (doby v sekundach) 
 +</code> 
 + 
 +Zjisteni stavu socketu stav keepalive 
 +<code> 
 +netstat -t --timer 
 +</code> 
 +[keepalive|on|off] (6176,47/0/0) -> (a/b/c) 
 +  * a=timer value (a=keepalive timer, when 1st field="keepalive"; a=retransmission timer, when 1st field="on"
 +  * b=number of retransmissions that have occurred 
 +  * c=number of keepalive probes that have been sent 
 + 
 + 
 +==== Ukončení procesů Firebirdu na windows ==== 
 + 
 + 
 +**Manuální zabití** Firebird procesů, které blokují licence je možné s pomocí [[http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx|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 ==== 
 + 
 +<code bash> 
 +#! /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 
 +</code>
firebird/fb_windows_kill.1245836923.txt.gz · Poslední úprava: 2009/06/24 09:48 autor: pavel