2013-04-17 2 views
0

우리는 3 개의 node.js 앱이 실행되는 테스트 서버를 가지고 있습니다. 각 응용 프로그램은 동일한 서버에서 실행되는 동일한 MongoDB 데이터베이스 테스트 인스턴스를 사용합니다. 그래서 어떤 주어진 순간에 우리는 mongodb 서버에 최대 3 개의 다른 연결을 가지고 있습니다.mongod의 처리가 너무 많습니다

문제는 각 코드 배포 후 (기본적으로 현재 실행중인 프로세스를 죽이고 코드 업데이트 및 새 프로세스 시작) htop에 /usr/bin/mongod --config /etc/mongodb.conf으로 표시되는 서버에서 새로운 프로세스 (단일 프로세스의 스레드)가 발생한다는 것입니다. 따라서 잠시 동안 테스트 서버를 다시 시작해야합니다. 그런 쓰레드가 너무 많아서 mongod 프로세스가 모든 RAM을 사용하기 때문에 테스트 서버를 다시 시작해야합니다.

나는 왜 이런 일이 일어나고 있으며이 문제를 해결하기위한 해결책을 찾고 있는지 잘 모르겠습니다.

우리가 간단히 node.js를 죽이면 연결 (그리고이 연결과 관련된 스레드)이 어떻게 든 살아 남기 때문에 nodejs 프로세스를 죽이는 대신 DB를 닫으면 정상적으로 종료되어야한다고 가정합니다 연결.

+0

실제로 mongod는 데이터베이스가 아닌 클라이언트입니다. node.js가 어떻게 작동하는지 모른 채 나는 mongo 프로세스가 있어야한다는 것을 의문의 여지가 있습니다. Mongo는 클라이언트 인 mongo 콘솔이 될 것입니다. 따라서 node.js 인스턴스는 node.js mongodb 클라이언트가있는 내부적으로 보입니다. 하지만 node.j가 내부적 인 일을 어떻게하는지 모르겠습니다. 일반적으로 하위 프로세스가 종료되어야하므로 앱을 어떻게 종료하는지 (우아하거나 아님) 중요하지 않습니다. 그러나 정상적으로 종료하는 것이 일반적입니다. – philnate

+0

@philnate 나는 '몽고'와 '몽고'의 차이점을 확실히 알고있다. 그러나 나는 mongodb와 관련된 htop에서 많은 프로세스를 볼 수있는 논리를 찾지 못했습니다. 그 모든 메모리를 복용하고 재부팅 서버가 사라진 후. 몽고와 관련된 좀비 프로세스 여야합니다. – AlexKey

+0

설치가 mongod를 어떻게 든이 방법 (수동 시작)으로 호출하고있는 것으로 의심됩니다. 그러나 파일을 사용함에 따라 조금 이상합니다. /etc/mongodb.conf에 정의 된 IP가 있는지 확인하십시오. 앱이 항상 동일한 IP (mongod)에 연결되거나 동적으로 정의 된 IP입니까? 만약 그 프로세스가 좀비가된다면 ps (리소스 소비 및 Z 플래그 없음)로 이것을 볼 수 있어야합니다. 그러나이 포트가 사용 중일 때 다른 포트를 넘겨 줄 수 있는지는 알 수 없습니다. – philnate

답변

1

htop도 다른 스레드를 보여 주므로 mongod가 여러 번 시작되지 않습니다. 포트가 이미 사용 중이므로 동일한 구성으로는 불가능합니다.

top 또는 ps aux | grep mongod를 사용하면 하나의 프로세스 만 볼 수 있습니다.

htop도 표시하지 않으려면 F2> 표시 옵션> 사용자 랜드 스레드 숨기기를 누르십시오.

+0

오, 그래, 이건 내가 의미하는 바, 설명을 혼란스럽게해서 미안해. 그러나 왜 그렇게 많은 스레드를 실행하고 모든 메모리를 필요로 대답하지 않습니다. 내 설정은 꽤 표준이며 이런 종류의 동작에 대해 불만을 전혀 느끼지 못했습니다. – AlexKey

+0

http://docs.mongodb.org/manual/faq/diagnostics/#memory-diagnostics를 보셨습니까? 우리는 프로덕션에서 mongodb를 실행하고 많은 앱을 배포/재시작하지만 메모리 부족으로 실행되지 않아서 컴퓨터를 다시 시작해야한다는 이상한 점이 있습니다. – supernova

+0

예, 읽었습니다. 전혀 도움이되지 않습니다. 왜 메모리 사용량이 한 번에 크게 증가하는지 설명하지 않습니다. 우리가 서버를 다시 시작하고 모든 응용 프로그램이 실행되면 사용 된 메모리는 약 60-70 %이고, 가동 시간은 1-2 개월이며 99.9 %입니다. – AlexKey