Newbie: Keep TCP socket open
Alan Wright
alan.wright at volubill.com
Wed May 21 06:47:59 EDT 2008
Thanks Roy
Any ideas how to code this child process stuff, as I said I am newbie and
not from a coding background
to be honest ideally yes, i'd get 50K, but if i can get above 30K that would
be OK
Alan
"Roy Smith" <roy at panix.com> wrote in message
news:roy-27A881.20583919052008 at 70-1-84-166.area1.spcsdns.net...
> In article <DK6dnSffU4LRSazVnZ2dnUVZ8qqlnZ2d at pipex.net>,
> "Alan Wright" <alan.wright at volubill.com> wrote:
>
>> Thanks for the feedback.
>>
>> Using the socket in a list is great
>>
>> However, as i imagined, I now get a limit of around 1500 conns before the
>> system crashes out, also i have noticed, that the ports loop back to 1025
>> when they hit 5000.
>>
>> Any ideas on how to make the list/socket get to around 50K
>
> Yikes. Not on any box I know of. A given process is limited in how many
> descriptors it can have open at once. I don't know of any that will allow
> anywhere near 50k. Somewhere in the 1-2000 range would be more typical.
> The 1500 you report is not at all surprising.
>
> You might try creating a bunch of child processes with os.system() or
> something of that ilk. Create 50 processes and have each one open 1000
> sockets.
>
> The next thing you have to worry about is whether the OS can handle 50k
> file descriptors open per-system. Or 50k sockets, or TCP connections. I
> wouldn't be too surprised if many systems couldn't. The address space
> (TCP
> port numbers) is 16-bit (unsigned), or about 65k, but you may well run
> into
> some other system limit long before you exhaust the theoretically
> available
> ports.
>
> Something like Scapy, recommended by others, may indeed be able to
> generate
> all those SYN packets you want, but that doesn't mean you'll get all the
> open connections you seek. You send a SYN packet to the remote host, and
> it sends back a SYN/ACK. The local kernel now sees a SYN/ACK packet for a
> port it doesn't know about. I'm not sure what the RFCs say about that,
> but
> I wouldn't be surprised if the kernel ends up sending a RST or maybe a FIN
> or something like that. The kernel owns the ports; it's not nice to try
> and mess with them on your own.
More information about the Python-list
mailing list