문제

내 Rails 사이트는 Mongrel을 운영하고 있으며 사용되는 메모리의 양에 문제가 있습니다. 내 루비 빈 프로세스는 약 66MB의 상주 메모리를 사용하고 있습니다. 레일이 사용하는 메모리의 양을 어떻게 줄일 수 있습니까?

이 속도로 메모리를 섭취하는 경우 많은 Rails 서버를 단일 시스템에서 실행하는 것이 경제적이지 않습니다. 내 PHP5 FCGI 프로세스는 15-25MB 사이에 있습니다.

나는 ROR에 익숙하지 않으며 Jruby가 도움을 줄 것인가? 메모리 발자국을 줄이고 성능 향상에 도움이되는 모든 의견은 환영받는 것 이상입니다.

도움이 되었습니까?

해결책

당신은 볼 수 있습니다 PHOUNCE 승객 그리고 루비 엔터프라이즈 에디션, 요즘 Rails 앱의 사실상 표준 설정입니다. 그 목표 중 하나는 메모리 사용을 절단하는 것입니다. 몽 그렐이 많은 것보다 간단합니다.

다른 팁

당신이 다른 무언가를 위해 Apache에 묶여 있지 않다면, 나는 또한 Phusion 승객과 함께 nginx를 시도 할 것입니다. 메모리 사용에 대해 우려하는 경우 Apache보다 Nginx의 더 작은 발자국이 표시되며 최신 버전의 승객은 최소한의 두통으로 Nginx를 다운로드, 컴파일 및 설치합니다.

Mongrel 프로세스를 대체 할 수도 있습니다 얇은 더 효율적이며 최근 가비지 컬렉션 (EventMachine을 통해)에 패치되어 더 나아졌습니다.

우리는 Nginx Frontends 뒤에 얇은 클러스터를 사용하여 미세한 결과를 사용합니다.

나는 승객이 사실상 표준이라고 말하기까지는 가지 않을 것이지만, 많은 견인력을 얻고 있습니다. 방금 Nginx+승객으로 전환했으며 Ruby 앱 (예 : Mongrels vs. 승객) 메모리 발자국은 약 450MB에서 295MB로 떨어졌습니다. 승객이 유휴 상태가되면 Procs를 죽일 수 있으므로 (구성 가능), 물론 트래픽이 발생하고 구성된 모든 인스턴스를 사용하는 경우에는 그에 따라 메모리를 사용하게됩니다. .

우리는 아직 구성에서 Ruby Enterprise Edition을 사용하지 않고 있지만 (주로 엔진 야드에서는 아직 사용할 수 없기 때문에) 메모리 풋 프린트가 더 작은 것으로보고 있습니다. 메모리는 우리가 스위치를 한 초기 가장 큰 이유 였지만 확장 또는 아래로 확장하기위한 더 빠르고 쉬운 구성과 같은 다른 이점이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top