2012-07-22 2 views
2

우분투 VPS (1GB RAM)에 레일 앱 (승객 및 mginod와 nginx)을 실행 중입니다. 몇 일 후부터 nginx를 시작한 후, 루비 프로세스는 서버에 요청이 없더라도 상자의 모든 메모리를 천천히 차지합니다. 또는 나는 그들이 어떤 임계 값에 도달 할 때마다 어떻게 든 승객에 비용이 많이 드는 루비 프로세스를 종료 할 필요가 - new_relic는 다음 enter image description here레일 애플리케이션이 서버 메모리를 모두 차지합니다.

최고 출력

top - 12:02:23 up 2:47, 1 user, load average: 0.03, 0.02, 0.00 
Tasks: 16 total, 1 running, 15 sleeping, 0 stopped, 0 zombie 
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 1048576k total, 1048576k used,  0k free,  0k buffers 
Swap:  0k total,  0k used,  0k free,  0k cached 

9993 mongodb 18 0 128m 29m 21m S 0 2.9 0:17.06 mongod                      
1135 nobody 18 0 71664 18m 856 S 0 1.8 0:00.55 memcached        
14310 passenge 15 0 500m 434m 4660 S 0 42.5 0:13.59 ruby 
15496 passenge 15 0 425m 360m 4648 S 0 35.3 0:13.06 ruby 

나는 몇 가지 코드 누출 메모리가 생각을 보여줍니다. 두 가지 문제에 대해 의견을 나누십시오.

답변

0

많은 정보가 없기 때문에 대답하기가 어렵습니다. 그래서 저는이 질문에 상당히 답할 것입니다. 시간 경과에 따른 메모리 사용량 또는 응답 시간의 저하를 보여주는 그래프가 도움이 될 것입니다.

어쨌든, 난 비슷한 설치 (레일/승객/Nginx/MongoDB/VPS - 1GB)있어.

  • 먼저 더 요청이 없는지 확인하기 위해 로그를 확인하여 어떤 요청 당신의 가정을 확인 (로깅을 보장하기는 Nginx에 충분한 켜져)

  • 이 하트 비트로 (새로운 유물을 해제하려고 자신의 서버) 및 다른 모니터링 소프트웨어 (예 : Nagios)를 검토하십시오.

  • 무료로드 테스트 앱 (예 : http://loadimpact.com)을 사용해보고 적극적으로로드 테스트 중일 때 메모리/GC 및 프로세서 그래프를 확인하십시오. 메모리 사용량이 건강한 수준 이상으로 올라간다면, 어딘가에 메모리 누수가있을 수 있습니다.

당신이 찾으면 변수 제거의 문제 일뿐입니다. Nginx에서 Rails를 일시 중단 하겠지만 프런트 엔드없이 Rails를 실행하거나 승객을 끄고 모든 정적 Nginx의 자산을 찾아서 원인을 찾으십시오.

희망이 도움이됩니다.

관련 문제