나는 잘 작동 한 Heroku의 Rails 3.2 Ruby 1.9 앱을 가지고있었습니다. 루비 2.1으로 업그레이드하고 4.1 레일 곧 점점 메모리 오류 시작 : 나는 메모리 사용을 보여에게 Heroku에서 옵션을 설정Ruby와 Rails를 업그레이드 한 후에 어떻게 메모리 누수를 진단합니까?
오류 R14 (메모리 할당량 초과)
합니다. 그것은 시간이 지남에 따라 사용량을 증가 보여 주지만, 그렇지 분명 이유 :
소스 = web.1 다이노 = heroku.12 ... 샘플 # memory_total = 514.44MB 샘플 # memory_rss = 449.46MB 샘플 # memory_cache = 0.52MB
[모듈 : 샘플 #의 memory_swap = 64.46MB 샘플 # memory_pgpgin = 142709pages 샘플 #의 memory_pgpgout는 =
나는 다음과 같은 최고 결과를 클래스는 대부분의 경우이있는 확인하기 위해 오브젝트 공간에서보고 얻은 27516pages , 1232], [MIME :: Type, 1643], [Regexp, 2334], [Hash, 3002], [Class, 3004], [Pr OC, 3363가], [RubyVM의 :: 봉투, 3416], [배열, 25436], [RubyVM의 :: InstructionSequence, 26490은], [문자열, 127601]
은 문자열의 매우 많은 것 같다 , 비록 내가 보통 얼마나 많은지 모르겠지만. ObjectSpace.garbage_collect
을 실행하여 문자열을 47485 인스턴스만큼 줄였으며 T_ARRAY (-16308) 및 : T_NODE (-19508)와 같은 다른 많은 클래스의 인스턴스 수에 영향을주었습니다.
위의 내용은 String 객체가 누수의 원인임을 의미합니까? 어떻게 진단해야합니까?
업데이트는 :
나는 추가 메모리 정보를 얻을 수있는 OINK 보석을 설치하고 로그의 조각에 달렸다.
7만7백48킬로바이트, 정적 번호 홈이
70,748킬로바이트이 섹션 번호가 표시
40,664킬로바이트 : - - 요약
최악의 요청
: 메모리의 톤을 사용하지만, 그냥 모든 것을 보여줍니다 페이지 번호가
을 보여 그것은 또한 생성 된 활성 레코드의 수를 보여줍니다
을 - 요약 -
최악의 요청 : 1569
는, 정적 번호 홈
829, 섹션 번호가
817, 페이지 번호 그래서 일반적인 메모리 누수가있다
보여 보여,하지만 난 그것을 어떻게 찾을 수 있습니까?
문제가 new_relic 인 것으로 의심됩니다. 나는 그것을 확인하기 위해 기다릴 것이다. –
사실 그것은 Ruby 2.1입니다. –