When using the node `http` module, I only have 5 TIME_WAIT.

But when using the `request` package, I have a lot of TIME_WAIT.

I created an issue on request https://github.com/mikeal/request/issues/287

Thank you.
Romain

2012/7/18 Romain <[email protected]>

> Thank you for the warning :)
>
>
> 2012/7/18 Ben Noordhuis <[email protected]>
>
>> On Tue, Jul 17, 2012 at 6:07 PM, Romain <[email protected]> wrote:
>> > Hi,
>> >
>> > I have a script in node-js that do a lot of http requests.
>> >
>> > After 30s, I did 30 000 requests, and I start having errors : `connect
>> > EHOSTUNREACH` and `getaddrinfo ENOENT`
>> >
>> > The command `netstat -putone` tell me that there are a lot of sockets in
>> > TIME_WAIT state:
>> >
>> > ...
>> > tcp        0      0 10.26.164.13:50180          10.26.165.15:9023
>> > TIME_WAIT   0          0          -                   timewait
>> (0.00/0/0)
>> > tcp        0      0 10.26.164.13:57571          10.26.165.14:9023
>> > TIME_WAIT   0          0          -                   timewait
>> (0.00/0/0)
>> > tcp        0      0 10.26.164.13:59341          10.26.165.14:9023
>> > TIME_WAIT   0          0          -                   timewait
>> (0.14/0/0)
>> > tcp        0      0 10.26.164.13:50219          10.26.165.15:9023
>> > TIME_WAIT   0          0          -                   timewait
>> (0.00/0/0)
>> > tcp        0      0 10.26.164.13:41825          10.26.165.16:9023
>> > TIME_WAIT   0          0          -                   timewait
>> (0.00/0/0)
>> > tcp        0      0 10.26.164.13:57264          10.26.165.14:9023
>> > TIME_WAIT   0          0          -                   timewait
>> (0.00/0/0)
>> > tcp        0      0 10.26.164.13:41151          10.26.165.16:9023
>> > TIME_WAIT   0          0          -                   timewait
>> (0.00/0/0)
>> > ...
>> >
>> >
>> > $ netstat -putone |grep TIME_WAIT |wc -l
>> > 31413
>> >
>> >
>> > Is there a way to tell the OS to reuse the sockets in TIME_WAIT state ?
>> > I read docs about SO_REUSE_ADDR :
>> > http://www.unixguide.net/network/socketfaq/4.5.shtml, and it's looks
>> what I
>> > need.
>> >
>> > Now I am wondering how to pass this option to the tcp socket.
>> >
>> > But a grep told me that SO_REUSE_ADDR is used in lib_uv.
>> >
>> https://github.com/joyent/node/blob/master/deps/uv/src/unix/stream.c#L90
>>
>> libuv sets it but it's called SO_REUSEADDR, that's why you didn't find it.
>>
>> The TIME_WAIT timeout is configurable on most operating systems, see
>> `man 7 tcp` (on Linux) for details.
>>
>> I would generally advise against changing the defaults, though.
>> There's a 50/50 chance that your tweaks will have an adverse impact
>> and that may not be evident until much, much later - at a time when
>> you've forgotten all about this gentle warning. :-)
>>
>> > I don't understand how lib_uv works.
>> >
>> > Is anybody could help me ?
>> >
>> > Cheers
>> > Romain
>> >
>> > PS: for information the script is this one:
>> >
>> >      require('async').forEachLimit(_.range(100000), 5, function(data,
>> next){
>> >
>> >   var request = require('request');
>> >
>> >   var hosts = ['tpsmdu11s', 'tpsmdu12s', 'tpsmdu13s'];
>> >   var host = _(hosts).shuffle()[0];
>> >   var reqOpts = {
>> >     url: 'http://' + host + ':9023/_search',
>> >     method: 'post',
>> >     timeout: options.timeout || 10000,
>> >     body: '{ "a json document": { ... } }'
>> >   };
>> >   request(reqOpts, next);
>> > });
>>
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines:
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to