2017-10-11 1 views
0

Express에 NodeJS 앱이 내장되어 있습니다. 나는 앱을 계속 실행하기 위해 pm2를 사용한다. 때로는 앱이 멈추는 등 페이지가 계속로드됩니다. SSH를 사용하여 서버에 연결하려고하면 그 또한 걸려 있고 프롬프트 나 아무 것도 표시하지 않습니다. 잠시 후 (약 1 ~ 2 분) 앱이 정상적으로 작동하기 시작하며 단말기의 SSH를 사용하여 서버에 연결할 수도 있습니다.NodeJS 앱의 CPU 사용률은 모든 요청에 ​​대해 100 %가됩니다.

CPU 사용량이 급증했기 때문에 pm2 프로세스를 keymetrics.io와 연결했는지 확인하십시오. 여기에서는 모든 요청에서 (간단한 로그인 페이지조차도) CPU 사용량 그래프가 100 %를 기록한 다음 다시 정상으로 돌아옵니다.

앱을 멈추지는 않지만 정상적인 동작이고 혼란 스럽다면 혼란 스럽습니다. 그 이유는 무엇일까요? 앱이 사용자 관점에서 느리게 진행되는 것은 아닙니다.

+0

코드를 보지 않고도 정상인지 여부를 알 수있는 방법을 모르겠습니다. – jfriend00

+0

@ jfriend00 모든 요청이 CPU 그래프를 100 % 순간적으로 기록하게 만드는 것은 모든 사람 (예 : nodejs 앱 모니터링 등의 경험이 많음)에서 발생하는 경우를 의미합니다. –

+0

@MohitBhardwaj 더 자세히 조사해야합니다. 자바 스크립트가 실행 중인지 여부에 관계없이 서버가 1 ~ 2 분 동안 잠겨있지는 않습니다. 무언가가 모든 코어를 차단하고 시스템을 동결시킵니다. –

답변

1

음, 그렇습니다. 자바 스크립트가 실행되는 정확한 시점에 CPU가 100 % 점유되었습니다. 그것은 정상적이고 예상됩니다. 어떤 주어진 순간에 CPU는 100 % 실행 중이거나 전혀 실행되지 않습니다. 중간에는 없습니다. 당신이 50 %를 보았을 때, 이것은 시간의 절반 동안 100 %이고 시간의 절반은 0 %로 구성되는 일정 기간 동안의 이동 평균입니다. 따라서 운영상의 문제는 CPU가 얼마나 오래 100 % 였는지입니다. 몇 밀리 초면 아무것도 아니에요. 몇 분이면 문제가 될 수 있습니다.

대부분의 모니터링 도구는 시간 경과에 따른 이동 평균을 보여 주므로 즉각적인 버스트가 100 %로 표시되지 않지만 모니터링 도구에서 순간적으로 100 %로 버스트를 표시하면 정상적으로 작동합니다. 실제 자바 스크립트가 실행되는 순간입니다.

상당한 시간 (예 : 분) 동안 CPU를 100 % 봤다면 그 시간 동안 서버가 다른 요청에 응답하지 않을 가능성이 높기 때문에 조사하는 데 문제가 있음을 나타낼 수 있습니다. 그러나 100 %에 순간적이고 짧은 스파이크가 정상입니다.

+0

고마워요. 그것이 바로 제가 알고 싶었던 것입니다. 동료는 50 % 이상의 CPU 사용량에 도달 한 앱이 없다고 말했습니다. 그래서 나는 그들이 시간이 지남에 따라 평균을 나타내는 언급 한 다른 모니터링 도구를 사용할 것이라고 생각합니다. 광산이 단일 코어 인 동안 서버가 멀티 코어 였기 때문에 그럴 수도 있습니까? –

+1

@MohitBhardwaj - node.js는 단일 코어에서 모든 자바 스크립트를 실행하므로 일반적으로 여러 코어를 갖는 데 큰 차이가 없습니다. 그러나 모니터링 도구와 그 방법을 보여주는 방법에 따라 달라집니다. 4 코어 CPU와 하나의 CPU가 100 % 점유 된 경우 모니터링 도구는 3 개의 다른 코어가 없기 때문에 전체 사용량의 25 %를 표시합니다. node.js의 주된 문제는 CPU 응답 시간이 길어질 가능성이 있기 때문에 오랜 시간 동안 CPU를 소모하는 node.js 코드를 작성하지 않으려한다는 것입니다. 그러나 100 %의 짧은 파열은 정상입니다. – jfriend00

+0

다시 한번 감사드립니다 :) 나는 정말로 혼란스러워했고 당신의 설명이 많은 도움이되었습니다. –

관련 문제