node-echoprint-server icon indicating copy to clipboard operation
node-echoprint-server copied to clipboard

Socket timeout on large ingests

Open kolombet opened this issue 12 years ago • 1 comments

When i trying to ingest large tracks (30+ minutes length) it ingests very long:

debug: Ingested new track in 215262ms. track_id=116

After those ingests, no response returned to client. Added event listeners on created sockets:

server.on('connection', function(socket) {
    log.info('SOCKET OPENED' + JSON.stringify(socket.address()));
    socket.on('end', function() { 
      log.info('SOCKET END: other end of the socket sends a FIN packet');
    });

    socket.on('timeout', function() { 
      log.info('SOCKET TIMEOUT');
    });

    socket.on('error', function(error) { 
      log.info('SOCKET ERROR: ' + JSON.stringify(error));
    });

    socket.on('close', function(had_error) { 
      log.info('SOCKET CLOSED. IT WAS ERROR: ' + had_error);
    });
  });

Got those messages on middle of ingest:

info: SOCKET TIMEOUT
info: SOCKET CLOSED. IT WAS ERROR: false

But on client socket do not get closed, so client wait for response. End of ingest completed with success, response sent (on closed socket!), but client still wait.

debug: Ingested new track in 215262ms. track_id=116
info: undefined - - [Fri, 10 Jan 2014 11:06:45 GMT] "POST /ingest HTTP/1.1" 200 60 "" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
info: ####--SENDING RESPONSE--####
info: headers:{"Content-Type":"application/json","Content-Length":60}
info: body:{"track_id":116,"track":"Interny.167.SATRip","success":true}
info: ####--RESPONSE FINISH--####

No idea how to block those timeouts. Removed all timeouts from server code. Tried to add KeepAlive, no result.

socket.setKeepAlive(true);

Two questions:

  1. How to prevent socket bultin timeout?
  2. Is it normal for node-echoprint-server to do such long ingests? (about 200 seconds!)
  3. Maybe better to divide this large track to few small? (if large tracks bad for echoprint)

Thanks!

kolombet avatar Jan 10 '14 11:01 kolombet

Add CURLOPT_TIMEOUT => 600, after curl init

picozone avatar Feb 14 '17 10:02 picozone