title: handle multiple request to node js api
body: <p>I was requested to create a simple rest api with node js and make a script that creates 10000 elements in the database through api calls. I created the server with the Hapi framework. If I send a single or 100 'PUT' requests to the API it creates a new element without problem but if I try to make 1000 requests or more it wont be able to create all of them or anything at all. I would like to know what may be the problem, if I'm not doing the script correctly or is the server the problem. So far I've received 2 errors: </p>
  
  <pre><code>{ [Error: connect ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'connect' }
  
  and (libuv) kqueue(): Too many open files in system
  </code></pre>
  
  <p>The first one trying to call the api 1000 times and the second one trying with 10000 times</p>
  
  <p>The code of the server is the following</p>
  
  <pre><code>var Hapi = require('hapi');
  var server = new Hapi.Server();
  var joi = require("joi");
  
  var dbOpts = {
      "url" : "mongodb://localhost:27017/songsDB",
      "settings" : {
          "db" : {
              "native_parser" : false
          }
      }
  };
  
  server.register({
      register: require('hapi-mongodb'),
      options: dbOpts
  },function (err) {
      if (err) {
      console.error(err);
      throw err;
  }
  });
  
  
  server.connection({
      host: 'localhost',
      port: 8080
  });
  
  
  server.route({
      method: 'POST',
      path: '/songs',
      config: {
          handler: function (request, reply) {
              var newSong = {
                  name: request.payload.name,
                  album: request.payload.album,
                  artist: request.payload.artist
              };
  
              var db = request.server.plugins['hapi-mongodb'].db;
              db.collection('songs').insert(newSong, {w:1}, function (err, doc){
                  if (err){
                      return reply(Hapi.error.internal('Internal MongoDB error', err));
                  }else{
                      reply(doc);
                  }
              });
          },
          validate:{
              payload: {
                  name: joi.string().required(),
                  album: joi.string().required(),
                  artist: joi.string().required()
              }
          }
      }
  });
  
  server.start(function () {
      console.log('Server running at:', server.info.uri);
  });
  </code></pre>
  
  <p>The code for the request is the following</p>
  
  <pre><code>var unirest = require('unirest');
  
  for(var i = 1; i&lt;=10000; i++){
  unirest.post('http://localhost:8080/songs')
  .header('Accept', 'application/json')
  .send({ "name": "song"+i, "artist": "artist"+i, "album":"album"+i})
  .end(function (response) {
      console.log(response.body);
  });
  }
  </code></pre>