2014-11-11 3 views
0

Passenger + Nginx를 사용하는 RoR 앱이 있습니다.Phusion Passenger가 많은 RAM을 소모합니다.

또한 이미지가있는 일부 일반 작업에 ImageMagick이 있습니다.

어제 (어제 - 내일) 나는 기억이 안좋은 경우에 내 앱이 충돌하는 것을 봤어!

ImageMagick에 '메모리를 할당 할 수 없습니다'라는 메시지가 기록됩니다.

무료 RAM을 확인할 때 120MB 만 무료였습니다. (요약은 1GB입니다).

대부분의 부분은 승객이 사용했습니다.

나는 그것을 다시 시작했고 모두 괜찮아졌습니다.

어떤 이유가있을 수 있습니까?

답변

1
  1. 우선은, MiniMagick에 ImageMagick이을 (당신은 메모리의 일부를 저장) 변경할 경우, ImageMagick과의 모든 기능을 사용했다.

  2. 다음 작품 이미지는 어떻게 이미지 작업을합니까? 항상 당신은 비동기 적으로 (resque/sidekiq/cron의 sidekeq/rake 태스크 - "더 작은 솔루션") 약간의 MB를 절약 할 수 있습니다 ..

  3. 승객은 꽤 많은 메모리가 필요합니다. Thin/Puma와 같은 더 작은 것을 사용해보십시오.

  4. 정말로 메모리 누출이없는 코드입니까? 당신이 루비를 사용하는 경우 2.1 여러 가지 도구, 예를 들어, 예를 excelent article를 들어, 감지, 아닌지하는, 자바 메모리 프로파일 러와 JRuby를에서 응용 프로그램을 실행하려고 할 수있다 VisualVM

에 다른 질문 당신이 정말로 완전한 레일이 필요하다고 생각하십니까? 레일이 크고 꽤 많은 메모리가 필요합니다. 어쩌면 Sinatra 또는 간단한 API 포도가 충분할 수 있습니다.

+0

멋진 답장을 보내 주셔서 감사합니다! 1. 좋은 조언입니다. 생각해 보겠습니다. 2. admin 패널에서 admin이 어떤 조치를 취할 때 호출하는 메소드입니다. 3. 오. 여객에 대한 좋은 반응을 많이 읽었지 만 이제는 다른 서버에 대한 정보를 얻을 것입니다. 4. 먼저 조언을 시도해보십시오. 5. 정말 레일이 필요합니다. Sinatra의 능력이 너무 작습니다. – mxgoncharov

+0

하지만 주된 질문은 승객이 메모리를 반환하지 않는 이유입니다. – mxgoncharov

+0

필자는 이미 그것을 썼다. 당신은 많은 정보를 제공하지 않는다. 그것이 내 답변이 매우 일반적인 이유입니다. 메모리 누수가없는 코드 (승객 메모리 요구 사항이 발생하는 경우 메모리 누수가없는 코드가없는 경우 코드 또는 일부 보석에있을 수 있음) 승객은 GC에 의존하는 시간과 여유 시간 서버가 얼마나 많은지에 따라 메모리를 다시 돌려받을 것입니다 .... –

관련 문제