2011-04-19 2 views
2

내 루비 레일 웹 사이트의 특정 페이지가 느립니다.레일 성능 테스트를위한 대표 데이터 생성

는 무슨 일이 일어나고 있는지 파악하기 위해, 나는 로컬 호스트에이 간단한 테스트를 설정이 guide을 따라 시도 : 내 테스트 데이터베이스가 비어있는이 시점에서

class BrowsingTest < ActionDispatch::PerformanceTest 
    def test_homepage  
    get '/slow_page' 
    end 
end 

, 그래서 나는 그것을 시드 필요할 것 일부 데이터. 몇 시간 동안 여러 가지를 파헤 치면 조금 혼란스럽고 혼란 스러울 지 모르겠다. 내가 해야할지 모르겠다.

1) 프로덕션 서버에서 데이터를 복사하여 테스트 데이터베이스에 저장한다. 이다 많은 사용자와 테스트 픽스처 .yml 파일

또는

3)를 사용하여 게시물 seed.rb 코드를 넣어 생성))?

또는

이이 작업을 수행 할 수있는 쉬운 방법이있다 사용자와 게시물을 생성합니다. (필자는이 작업을 시도했지만 성능 테스트가 실행될 때까지이 파일에서 생성 된 내용이 사라졌습니다.

4) Factory Girl 및 Faker와 같은 일부 보석을 발견했습니다. 아직 시도하지는 않았지만 읽은 내용은 성능 테스트를 위해 수천 명의 사용자를 생성하는 것이 아니라 특정 상황과 주를 만드는 데 더 유용합니다.

나는 이것이 일반적인 시나리오 일 것이라고 생각하고 이것을 한 사람들로부터 조언을 얻고 싶습니다. 고맙습니다.

답변

2

성능 테스트를 생성하는 가장 좋은 방법은 프로덕션 서버의 실제 사용자 데이터를 사용하는 것입니다. 그 (것)들이 너를 이용할 수있는 경우에, 그 (것)들을 사용 하십시요. 그 이유는 가장 일반적인 실제 사용자 시나리오를 위해 웹 애플리케이션의 성능을 최적화하기 위해서입니다. 실제 사용자 행동을 기반으로하지 않는 모든 시나리오는 기껏해야 덜 대표적이거나 최악의 경우 전혀 쓸모가 없습니다. 실제로

, 싶은 것은 :

  • 프로덕션 데이터베이스를 복사하여 성능 테스트를 위해 그것을 사용 -이 쿼리 큰 테이블 예를 들어, 생산 속도가 느린 인해 실행하는 어떤 사항을 확인합니다 누락 된 인덱스, 업데이트 속도에 영향을주는 너무 많은 인덱스 등은 테스트에서 동일하게 적용됩니다.
  • 웹 서버 로그를 구문 분석하여 사용량이 많은 시간에 느린 페이지의 동시 요청 수를 파악하고 테스트에서 동일한 종류의로드를 생성합니다 (또는 그 이상 - 성장 기대치에 따라 다름).
  • 분산 된 서버 네트워크에서 실제 부하 근사치를 제공하는 서비스를 살펴볼 수 있습니다. 예를 들어, 살펴보기 Browser Mob
+0

테스트를 위해 프로덕션 데이터베이스를 복사하려면 사람들이 mysqldump를 사용합니까? – tstyle

+0

예. 그것은 그것을하는 좋은 방법입니다. – Elad