Ako vycistit padnutu listening socket?

Sekcia: Konfigurácia 08.10.2007 | 01:04
Avatar Frantisek Klabzuba Debian  Používateľ
Ked padne nejaky server, tak nejaku chvilu, cca 20 sekund sa na tom porte neda znova pocuvat (padne to na binde). Potom uz to znova ide. Nejde to ale nejak urychlit aby som nemusel tych 20s cakat, nieco ako "teraz vycisti padnute listening sockety"? Vdaka.
    • Re: Ako vycistit padnutu listening socket? 08.10.2007 | 01:23
      Avatar borg Arch, Debian jessie  Administrátor
      cez listen zvacsit frontu?
      • Re: Ako vycistit padnutu listening socket? 08.10.2007 | 01:23
        Avatar borg Arch, Debian jessie  Administrátor
        man 2 listen
        • Re: Ako vycistit padnutu listening socket? 08.10.2007 | 01:56
          Avatar Frantisek Klabzuba Debian  Používateľ
          ???

          ja mam problem s opatovnym spustenim servra, nie s klientami.
    • Re: Ako vycistit padnutu listening socket? 05.03.2008 | 18:29
      Avatar Frantisek Klabzuba Debian  Používateľ
      Proste v linuxe co si clovek sam nespravi, nema:

      http://sourceforge.net/projects/unbind

      A tom som po tomto nastroji tuzil od prveho dna co robim na linuxe, cize nejakych 6-7 rokov. Nikto mi nebol schopny poradit. Az teraz je linux skutocne pripraveny na desktop!
    • Re: Ako vycistit padnutu listening socket? 05.03.2008 | 19:27
      Avatar uid0 Debian  Používateľ
      do 20 sekund si to stihol opravit, prekompilovat a spustit? :)

      btw mozes napisat aky error vracal ten bind()? nejak mi k tomu nesedi ziaden z manualu a tiez som si teraz dal tu namahu a nic podobne som nespozoroval
      $ date; ./server 2000; date; ./server 2000;date
      Wed Mar  5 18:26:12 CET 2008
      listening on port 2000...
      accepting...
      zsh: killed     ./server 2000
      Wed Mar  5 18:26:15 CET 2008
      listening on port 2000...
      accepting...
      zsh: killed     ./server 2000
      Wed Mar  5 18:26:16 CET 2008
      
      Debian. apt-get into it…
      • Re: Ako vycistit padnutu listening socket? 05.03.2008 | 21:58
        Avatar Frantisek Klabzuba Debian  Používateľ
        >> do 20 sekund si to stihol opravit, prekompilovat a spustit? :)
        ano, pracujem velmi rychlo. v 99% pripadov vypise subor+riadok kde to padlo, idem tam, doplnim "if nieco<>nil then ..." a za 10s mozem pokracovat. Inak u mna je to 60 alebo 120s, podla toho kde som. Tento pondelok som si pocas toho cakania na chvilku lahol a zobudil som sa o pol hodinu neskor.

        >> btw mozes napisat aky error vracal ten bind
        ked vykomentujem SO_REUSEADDR tak to bind vrati -1, to iste vrati ak server normalne bezi

        >> nic podobne som nespozoroval
        Ved to je na tom to najhorsie, zalezi to aj od toho v akom stave je klient ked server padne. Bezne mam dni ze mi server pada kazdych 5 minut ale nahodim ho v pohode, a potom pride den ze kazdy jeden pad ho blokne. Tato chyba sa deje asi v 50% pripadoch ale nie je replikovatelna.

        Aby to nebolo take jednoduche, niekedy ani tento program (unbind) nefunguje. Vtedy treba spravit toto ale to uz je posledne stadium, funguje 100% (ale len v kombinacii s unbind, nestaci zmenit parameter jadra):
        # echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle 
        # ./server
        bind failed (-1)    ... zmenil som tcp_tw_recycle ale server nepouziva SO_REUSEADDR takze by ju sam od seba neuvolnil
        # unbind 80   ... toto to uvolni
        # echo 0 > /proc/sys/net/ipv4/tcp_tw_recycle