2011-01-27 2 views
1

Rails (2.3.5) 앱에서 최적화를하고있어 필터 체인을 벤치마킹하는 우아한 방법을 찾지 못하는 것 같습니다.레일은 필터 체인을 벤치 마크합니까?

ab -n 200 -c 3 -i -k http://localtestingserver:80/test 

/테스트 페이지의 컨트롤러에서 아무것도하고 아무것도 설치, 그래서 그것은 단지 우리의 기본 필터 체인을로드 플러스 레이아웃을 렌더링하는 것 : 나는 AB 같은 것을 함께 사이트를 테스트입니다. 나는 요청 당 평균 86ms를 얻는다.

필자는 필터 (skip_filter filter_chain)를 비활성화하면 37ms로 떨어지고 레이아웃 (render : layout => false)이 없으면 16ms로 떨어집니다. Benchmark.realtime을 벤치마킹 할 수있는 방법이 있습니까? 컨트롤러가 호출되기 전에 (또는 실제로) 필터 체인에로드되는 각 함수가 있습니까? 요청에 대해 호출되는 모든 필터 목록을 출력 할 수 있습니까?

감사합니다,

편집

나는 Hodel3000 로거를 사용하고 있는데 OINK 그래서 같이 요청에 따라 출력을 얻을 :

Jan 27 17:56:55 testing rails[19611]: Memory usage: 98748 | PID: 19611 
Jan 27 17:56:55 testing rails[19611]: Instantiation Breakdown: Total: 2 | Room: 1 | User: 1 
Jan 27 17:56:55 testing rails[19611]: Completed in 240ms (View: 28, DB: 0) | 200 OK [/test] 

I 좋겠 단지 같은 컨트롤러가 호출되기 전에 어떤 일이 발생하는지 더 잘 이해하고 프로파일 링하기 위해 컨트롤러를 잘 프로파일 링 할 수 있습니다. 위의 요청에서 여분의 212ms가있는 곳과 같습니다. 분명히 필자는 각각의 before_filters에 코드를 넣을 수 있었지만 한 번에 모든 필터를 감싸는 방법이 포함되기를 바랐습니다 (포함 된 보석 등의 필터처럼).

답변

0

Performance Testing Rails Applications 가이드는 시작하기에 적합한 장소입니다.

+1

감사합니다. 나는 많은 것을하고 있습니다. 다른 컨트롤러/요청을 프로파일 링하는 것이별로 아니지만 요청할 때마다 어떤 일이 발생합니까? 위의 질문을 명확히하겠습니다. –

+0

깨진 링크. 3.2.14 버전은 다음과 같습니다. http://guides.rubyonrails.org/v3.2.14/performance_testing.html – kristinalim