linux socket limit?
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
Pre pridávanie komentárov sa musíte prihlásiť.
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.
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.