2012-02-06 3 views
4

환경 : Linux Mint 32 비트, JRuby-1.6.5 [i386], 레일 3.1.3.JRUBY 레일 어플리케이션 프로파일 링 <unknown> 요소

WEBrick (개발 모드의)에서 JRuby 1.6.5에 배포 된 레일 애플리케이션을 프로파일하려고합니다.

내 JRUBY_OPTS "-Xlaunch.inproc = 거짓 --profile.flat"내 모델 중 하나에서

, 내가 명시 적으로 잠을 소개 (5)이 메소드가 before_save 후크의 호출되는 것을 보장 모델을 저장하는 동안. 의사 코드는 ...

class Invoice < ActiveRecord::Base 
<some properties here...> 

before_save :delay 

private 
def delay 
    sleep(5) 
end 
end 

위의 코드는 송장의 인스턴스가 지속 도착하기 직전, 방법, 지연가 자동으로 호출되도록합니다.

I가 (AN RSpec에 단위 테스트를 통해)이 모델의 인스턴스를 생성하는 코드를 프로파일 링하기, I는 다음과 같은 출력 얻을 왜 I 대신 두 요소 보이니 상기 출력

6.31  0.00  6.31   14 RSpec::Core::ExampleGroup.run 
6.30  0.00  6.30   14 RSpec::Core::ExampleGroup.run_examples 
6.30  0.00  6.30   1 RSpec::Core::Example#run 
6.30  0.00  6.30   1 RSpec::Core::Example#with_around_hooks 
5.58  0.00  5.58   1 <unknown> 
5.43  0.00  5.43   2 Rails::Application::RoutesReloader#reload! 
5.00  0.00  5.00   1 <unknown> 
5.00  5.00  0.00   1 Kernel#sleep 
4.87  0.00  4.87   40 ActiveSupport.execute_hook 
4.39  0.00  4.39   3 ActionDispatch::Routing::RouteSet#eval_block 
4.38  0.00  4.38   2 Rails::Application::RoutesReloader#load_paths 

을 Invoice.delay 또는 비슷한 것.

실제로 JRUBY_OPTS (위에서 언급 한)와 같은 레일 서버 (WEBrick)를 시작하면 모든 응용 프로그램 코드 프레임이 으로 알려지지 않으므로 프로파일 러 출력에 요소가 없습니다!

뭐가 잘못 되었나요?

+0

어떻게 WEBrick의 출력을 얻고 있습니까? – Lelon

답변

1

최대 프로필 수는 Set -Xprofile.max.methods JRUBY_OPTS (기본값은 100000이며 결코 충분하지 않음)으로 제한됩니다. 예 :

export JRUBY_OPTS="--profile.flat -Xprofile.max.methods=10000000"