linux socket limit?

Sekcia: Konfigurácia 13.10.2011 | 14:09
Avatar Lapajko Arch Linux  Používateľ
Ahojte,

snažím sa zisiť počet requestov, ktoré dokáže apache alebo nginx ohandlovať v priebehu jednej sekundy.
Problém je, že keď tam posielam v cykle požiadavky, po približne 28000 mi to začne vypisovať "Couldn't connect to server".

Nie je tam firewall, stránka ktorú downloadujem je nulovej veľkosti.
Snažil som sa nastaviť aj vyšší počet tcp connections v linuxe, ale nič nepomáha.

Čo s tým?

Thx
    • Re: linux socket limit? 13.10.2011 | 23:33
      johnny   Návštevník
      Ináč, mohol si sem uviesť aj tvoje zistenia. Keď si to označil ako vyriešené.

      Každý, Socket má svôj buffer, ktorý sa v prípade, že program nestíha tieto dáta spracúvať plní. Ak po naplnení bufferu doplna,v prípade TCP odmietne spojenie, v pípade UDP sa packet proste stratí,lebo do buffra sa dáta nezmestia.

      V prípade TCP môže nastať prípad, že bude prekročená maximálna hodnota,čakateľov na TCP spojenie, k čomu v tvojom prípade zrejme došlo.
      • Re: linux socket limit? 14.10.2011 | 09:48
        Avatar Lapajko Arch Linux  Používateľ
        Problém bol ako na serveri, tak aj na stroji, z ktorého som posielal http requesty.
        Keď vznikne priveľa spojení, aj po uzatvorení ešte ostanú visieť v stave TIME_WAIT.
        Tento problém som vyriešil na serveri, avšak bolo potrebné to spraviť aj na stroji, ktorý requesty posielal.

        Takže vim /etc/sysctl.conf a vyzerá to napríklad takto:

        net.ipv4.tcp_fin_timeout = 35
        net.ipv4.tcp_keepalive_time = 1800
        net.ipv4.tcp_keepalive_intvl = 35
        net.ipv4.tcp_tw_recycle = 1
        net.ipv4.tcp_tw_reuse = 1
        net.netfilter.nf_conntrack_max=500000
        net.ipv4.ip_local_port_range=1024 65500
        fs.file-max=13107200
        net.ipv4.tcp_max_syn_backlog = 2048

        To bolo riešenie :)

        V.