2013-07-25 2 views
1

서버의 IP를 수신 대기하는 HTTP 서버 설정이 포트 1338에 있습니다. 이 작업은 노드를 처음 시작할 때 잘 작동하지만 서버가 무작위로 수신 대기하지 않는 문제가 발생했습니다. Forever가 잡히지 않은 예외를 포함하여 내 앱에서 수집하는 로그를 확인했습니다. 시작할 때부터 아무런 오류가없는 로그에는 아무 것도 나타나지 않습니다.Node.js HTTP 서버가 수신 대기하지 않습니다.

제 질문은 두 가지입니다. 서버가 임의의 간격으로 청취를 중단하게하는 원인은 무엇입니까? 또한 노드에서 어떤 검사를 실행해야 리스너가 멈추는 오류를 로그 아웃 할 수 있습니까?

다음은 내 HTTP 서버의 코드입니다.

http.createServer(function (req, res) { 
    var pathname = url.parse(req.url).pathname; 
    var query = url.parse(req.url, true).query; 
    var check; 
    var responseData = ''; 
    if(pathname === '/healthcheck/ticket'){ 
     check = new Date().getTime(); 
     check = check - tickets.lastAction; 
     if(check < 30000){ 
      responseData = "page ok"; 
      res.writeHead(200, {'Content-Type': 'text/plain'}); 
      res.end(responseData); 
     } 
     else{ 
      check = check/1000; 
      responseData = 'Last action taken by the Ticket Generator was ' + check + ' seconds ago'; 
      res.writeHead(200, {'Content-Type': 'text/plain'}); 
      res.end(responseData); 
     } 
    } 
    else{ 
     responseData = 'URL NOT FOUND!'; 
     res.writeHead(404, {'Content-Type': 'text/plain'}); 
     res.end(responseData); 
    } 
}).listen(config.eng.port, config.eng.host); 
+2

저는 서버가 듣기를 거의 멈추지 않는다고 확신하지만, 멈추는 원인을 찾아야 만합니다. 위에 표시된 코드를 시도했는데 듣기를 멈추지 않는 것처럼 보였습니다 (코드에서 아무 것도 제시하지 않음). console.log에 모든 것을 시도해보고 듣기를 멈추기 전에 마지막 명령이 무엇인지 알아 내려고 했습니까? 또한 (이것은 어리석은 제안 일지 모르지만 나는 영원히 내 마음의 맨 영원히 작동하는 방법을 모른다) 영원히 로그가 다시 시작될 때 로그를 덮어 쓰지 않는다고 확신 하는가? (오류가 발생했을 때를 대비하여)? –

+0

나는 영원히 검사했고 그것은 단지 로그를 추가하는 것이다. 물론 지금은 일어나지 않았습니다 (때로는 며칠이 걸립니다), 콘솔 로깅을 다시 시작하여 각 단계를 보여주고 죽는 곳을 확인합니다. –

답변

2

pathname/healthcheck/ticket과 같지 않은 경우 케이스를 처리하지 않습니다. 다른 분기는 없습니다.

따라서 서버가 /healthcheck/ticket이 아닌 다른 URL로 호출되면 이 호출되지 않으므로 res 스트림을 닫지 않습니다.

잠시 후 서버의 (네트워크) 리소스가 부족하여 이 (가) 인 것처럼 보입니다 (즉, 더 이상 새로운 요청에 반응하지 않음).

해결책은 간단합니다. else 분기를 제공하고 res.end()을 호출하면 모든 것이 잘됩니다.

+0

죄송합니다. URL에 URL을 넣지 않았지만 회사에서 원하지 않는 일부 코드를 잘라내 었으므로 잘랐습니다. 이제 else를 다루는 것을 더 잘 반영하도록 코드를 업데이트합니다. –

관련 문제