ios 게임 http 서버로 node.js 0.10.18 (Amazon EC2에서)을 사용하고 있습니다.node.js의 메모리 누수를 의미합니까?
메모리 사용량을 인쇄하려면 process.memoryUsage()
을 사용합니다. 노드의 메모리 사용이 비정상임을 발견했습니다.
노드 machine1
에 :
2014-10-13T02 : 35 : 04.782Z - 중요 :
이틀 동안 실행 한 후 프로세스 : heapTotal 119.70 MB는 441.57 MB
RSS 84.62 MB를 heapUsed machine2
에 노드 :
2014-10-13T02 : 36 : 01.057Z - 중요 : 프로세스 : heapTotal 744.72 MB는 1045.53 MB
,536,913,632 RSS 108.19 MB를 heapUsed 10 개결과는 다음과 같습니다
모두
heapUsage
의 아주 작은, 그것은 노드 프로세스가 실행 시간을 함께 할 수 없다.machine2
에있는heapUsed
보다 훨씬 큽니다. 프로세스를 다시 시작할 때까지 결코 작아지지 않습니다. 그러나heapTotal
(machine1
)은 정상적으로 보입니다.machine1
은 Amazon EC2 m3.xlarge,machine2
은 Amazon EC2 m3.medium입니다. Amazon CloudWatch에서 나는machine2
의 성능이 불충분하다는 것을 알고 있습니다. 때로는machine2
의 CPU 사용량이 100 %가됩니다. 그렇다면 비정상적인heapTotal
사용은 하드웨어의 부족함과 관련이 있습니까?node-usage
모듈을 사용하면 노드 프로세스의 CPU 사용이 50 %를 넘지 않기 때문에 100 % CPU 사용은 노드 프로세스의 결과가 아닙니다. 이웃 가상 머신이 사용량을 도난 당했다고 생각합니다 (Amazon EC2에서 공유 된 CPU 시간이 있음을 알고 있습니다).저는 버퍼 메모리 사용량이
(rss - heapTotal)
이라는 것을 알고 있습니다. 두 머신의 버퍼 메모리 사용량이 점차 증가한다는 것을 알게되었습니다. 보시다시피, 버퍼 메모리 사용량은 모두 2 일 동안 실행 한 후 300MB 이상입니다.
내 질문은 : heapTotal
사용이 heapUsed
가 매우 작은 경우에도 공개되지 않습니다 왜
? 노드 자체 나 다른 코드의 버그에 문제가 있습니까? 하드웨어를 업그레이드하기 위해 문제를 해결할 수있는 유일한 방법입니까?
왜 버퍼 사용이 점차 증가합니까? 메모리 누수가 발생 했습니까? 노드 자체 나 다른 코드의 버그에 문제가 있습니까? 아니면 그냥 무시하니?
고마워요!