TCP serveri kaatuu Linux / Raspberry pi 3

Anonyymi

Osaisiko joku kertoa, että onko Linux järjestelmässä tai Raspberry pi:ssä joku rajoite TCP serverin käyntiajalle?

Olen tehnyt sovelluksen, joka kommunikoi TCP serverille (Portti randomisti 2004) ihan onnistuneesti. Mutta serveri pysyy hengissä vain noin tunnin verran, sen jälkeen se lakkaa vastaamasta.

Serveri on rakennettu Python kielellä. Tiedot siirtyvät tunnin verran ok, ja sitten kommunikointi lakkaa. Jos käynnistän Python ohjelman uudelleen, niin kommunikointi on edelleen kuollut. Rasperry pi:n uudelleen käynnistyksen jälkeen kommunikointi alkaa välittömästi uudelleen.

Olisiko ajatuksia, että mitä tuolle voisi keksiä ja mistä vikaa metsästää?

6

198

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Tarkista ainakin muistinkulutus, googlaamalla löytyi yksi tapaus jossa serveri vuoti RAM:ia ja lakkasi vastaamasta kun RAM loppui kesken. Tosin tuossa tapauksessa Python ohjelman uudelleenkäynnistyksen pitäisi auttaa, joten ei ehkä ole sinun ongelma, mutta hyvä kuitenkin tarkistaa.

      Esimerkiksi "free" komento terminaalissa kertoo paljonko muistia on vapaana.

      • Anonyymi

        Täytyypä ensi kerralla katsoa muistinkulutusta, hyvä vinkki.

        Toisaalta tosiaan luulisi ohjelman vapauttavan RAMin käytön, kun sen sammuttaa ja käynnistää uudelleen. Sen olen havainnut, että ei ole väliä, että lähettääkö kaksi sanomaa tuon tunnin aikana vai sata. Tavoite olisi lähettää sanoma kerran tai kaksi tunnissa.


    • Anonyymi

      Joskus tuli tehtyä ohjelma, joka avasi soketin ja serveri oli itse asiassa NAT-verkon takana kotiverkossa routerin hoitaessa julkinen ip ja pakettien uudelleen ohjaus. No, jos dataa ei kulkenut, NAT yhteys jostain syystä hukkasi yhteytensä koneilta, joilta ei oltu yhteydessä ulkomaailmaan sen uusimisajan aikana. Tälle ei tietenkään ollut säätöjä ja oli toimittava routerin ehdoilla. Ongelmaan auttoi se, että yhteys luotiin joka kerta uudelleen. Olisi tietysti ollut mahdollista lähettää jokunen tavu socketin yli aina silloin tällöin - muutenkin hyödyllistä, jos yhteys menee poikki siivota tällöin jälkensä.
      Toinen mikä tulee mieleen, niin raspi:ssa joku mode väärin, eikä herää ethernet-paketista, jos laite menee virransäästöön? DHCP/IP:n uusiminen jää välistä, onko päällä?

      • Anonyymi

        Tämä on ihan omassa lähiverkossa (Wifi) kiinteillä IP osoitteilla kaikki laitteet.
        Uskoisin, että IP kyllä pysyy laitteilla, koska VNC yhteydellä olen edelleen yhteydessä RPi:hin vaikka sen TCP kommunikointi katkeaa dataa lähettävän clientin kanssa.


      • Anonyymi
        Anonyymi kirjoitti:

        Tämä on ihan omassa lähiverkossa (Wifi) kiinteillä IP osoitteilla kaikki laitteet.
        Uskoisin, että IP kyllä pysyy laitteilla, koska VNC yhteydellä olen edelleen yhteydessä RPi:hin vaikka sen TCP kommunikointi katkeaa dataa lähettävän clientin kanssa.

        Hiukan tuli pengottua, koska kiinnosti itseäkin tämä aihe. Näyttää siltä, että tcp lähettää keep-alive paketteja yhteyden yli ja jos tällaista ei tule -yhteyden saa sulkea tietyn ajan kuluttua. proc-tietojärjestelmästä löytyy ainakin:
        /proc/sys/net/ipv4/tcp_keepalive_time tai vaihtoehtoisesti:
        $ sysctl net.ipv4.tcp_keepalive_time
        7200
        Joka omassa koneessani oli 2h. Ilmeisesti tämä on aika, jonka jälkeen keep-alive paketteja ei enää lähetetä?
        $ sysctl net.ipv4.tcp_keepalive_intvl
        75
        Default arvo näyttäisi olevan tcp-sessiolle 300 sekuntia.
        Näyttää siltä, että löysin täydellisen ohjeen vasta kirjoitettuani tämän:
        https://webhostinggeeks.com/howto/configure-linux-tcp-keepalive-setting/


      • Anonyymi
        Anonyymi kirjoitti:

        Hiukan tuli pengottua, koska kiinnosti itseäkin tämä aihe. Näyttää siltä, että tcp lähettää keep-alive paketteja yhteyden yli ja jos tällaista ei tule -yhteyden saa sulkea tietyn ajan kuluttua. proc-tietojärjestelmästä löytyy ainakin:
        /proc/sys/net/ipv4/tcp_keepalive_time tai vaihtoehtoisesti:
        $ sysctl net.ipv4.tcp_keepalive_time
        7200
        Joka omassa koneessani oli 2h. Ilmeisesti tämä on aika, jonka jälkeen keep-alive paketteja ei enää lähetetä?
        $ sysctl net.ipv4.tcp_keepalive_intvl
        75
        Default arvo näyttäisi olevan tcp-sessiolle 300 sekuntia.
        Näyttää siltä, että löysin täydellisen ohjeen vasta kirjoitettuani tämän:
        https://webhostinggeeks.com/howto/configure-linux-tcp-keepalive-setting/

        Hieman lisää tultua testailtua, ja joku keep-alive henkinen ongelma tämä on. Serveri itsessään pysyy hengissä. Tein testi koodi pätkän localhost koneelle, ja vaikka client menettää yhteyden, niin isäntä koneelta pystyy kirjoittamaan serverille.

        Kun client ei enää saa yhteyttä serverille, niin jos serveriltä pingaa clientia, niin kommunikointi alkaa uudelleen. Tosin vain hetkeksi. Jostain syystä kommunikointi menee johonkin unitilaan, ja herää sieltä vain hetkeksi.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. En minä kyllä enää odota sinua

      Olet siellä sen harmaan kanssa. Niin, annoit minun nähdä lämpimät tunteesi siitä huolimatta. Se merkitsi kyllä paljon. O
      Ikävä
      35
      1796
    2. Jos joku luulee että kaikki käy

      Sanon vain tämän. Minun kanssani ei neuvotella. Minun kanssani eletään tasavertaisesti. Jos se on liikaa, niin ovi rinn
      Ikävä
      52
      1415
    3. Taas pedofiliatuomio Haapaveelle

      Vastenmielisiä ja vakavia rikostapauksia pikkupaikkakunnan alueellekin näyttää riittävän. Tämän alan rikoksien tuomiot
      Haapavesi
      36
      1305
    4. Joka kolmas työtön on työkyvytön

      Viime vuonna työnhakuvelvoitteen ulkopuolella oli noin kolmannes työttömistä työnhakijoista. Huhheijaa, mihin suomalais
      Maailman menoa
      153
      1267
    5. Sakin hivutus - ilmiö

      Miten tuollainen tuollainen ilmiö kuin ”sakin hivutus” syntyy? Mitä syitä ilmiön syntymiseen tarvitaan? Onko sakissa jok
      80 plus
      68
      1199
    6. Ei ole rohkeutta tulla jututtamaan

      Voidaan me nähdä ja tervehtiä, sitäkin harvoin, mutta iso kynnys on edes mennä lähelle ja kysyä kuulumisia. Ymmärrät var
      Tunteet
      8
      1181
    7. Julkinen saunatilanne Haapavedellä, tämä on täyttä paskaa!

      Eilen Haapaveden uimahallin saunassa koettu tilanne oli täysin käsittämätöntä ja helvetin järkyttävää. Ladyboy harjoitti
      Haapavesi
      19
      809
    8. Me ei voida olla yhdessä

      Järki päähän ja realiteetit huomioon ottaen.
      Ikävä
      57
      780
    9. Mitä tapahtuu?

      Mitä säpäkän risteyksessä on tapahtunut kun poliiseja, ambulansseja ja kopteri paikalla?
      Outokumpu
      12
      762
    10. Kuhmon K-kaupan vanhenevat hapannaamat kassoilla

      Pitemmän aikaa olen ihmetellyt kaverin kanssa miksi Kuhmon K-kaupassa on aina tympeimmät kassattöntekijät? Kesällä tulee
      Kuhmo
      13
      726
    Aihe