2012-11-21 4 views
0

이것은 더 많은 디자인 문제입니다. 동시 사용자 수, 테스트를 실행하는 데 걸리는 시간 및 적중 될 URL 목록을 지정할 수있는 Java에서 http로드 생성기를 어떻게 설계 하시겠습니까?http로드 생성기 (Java)

some_load_generator -users n1 -time n2 -urls some_file_name.txt 

이 프로그램은, 시작 사용자 수에 의해 지정된 스레드의 수를 만들고, 모든 스레드는 URL 파일에서 임의의 URL을 읽고 GET 요청을한다. 모든 요청에 ​​대해 각 스레드는 전체 GET 요청을 완료하는 데 걸린 시간을 기록합니다. 5 초마다이 프로그램은 모든 스레드가 지금까지 만든 모든 요청에서 최소, 최대 및 평균 시간을 인쇄합니다.

스레드를 생성하고 최소, 최대 및 평균 정보를 저장하고 5 초마다 해당 정보를 인쇄하는 방법에 대해 설명해주십시오. 여기

는 내가 지금까지 생각했을 것입니다 :

  1. 이 프로그램은 사용자의 수에 해당하는 새로운 고정 스레드 풀 집행을 생성합니다. 이것은 스레드 라이프 사이클 관리를 필요로합니다.

  2. Runnable 구현은 파일에서 한 행을 읽고 GET 요청을 내고 시간을 기록합니다.

  3. 내 주된 이슈은 이러한 변수에 대한 액세스를 동기화해야하므로 효율적으로 모든 스레드에서 최소, 최대 및 평균을 계산하는 방법입니다.

  4. 통계를 5 초마다 인쇄하기 위해 나는 깨어나서 통계를 표시하고 잠자기 상태로 되돌아가는 타이머 작업을 사용합니다. 여기서 중요한 문제는이 스레드가 인쇄를 시도하는 동안 통계 상태를 업데이트하려고하는 많은 스레드가 있기 때문에 타이머 작업을 효율적으로 예약하는 방법입니다. 나는이 스레드의 우선 순위를 다른 것에 비해 높일 수 있으므로 실행 중에 환경 설정을 가져올 수 있습니다.

+2

Jmeter를 살펴보십시오 – Frank

답변

0

스레드가이 데이터를 일종의 집계 장치로 보내면 통계 프린터가 여기에서 데이터를 가져 오는 것이 어떻습니까?

이 방법은 각 스레드가 완료되기 직전에 수집기에서 필요한 메트릭을 업데이트하므로 통계 프린터는 실행중인 스레드를 간섭 할 필요가 없습니다.

일종의 원격 로깅과 비슷합니다. 따라서 각 스레드는 수행해야 할 작업을 수행하고 완료하기 직전에 수집기로 보낸 시간을 보내면 프린터는 N 초마다 데이터를 인쇄하지만 스레드 자체가 아니라 수집기에서 가져옵니다. 버퍼처럼).

0

체크 아웃 Apache JMeter. Aggerate Report은 원하는 통계를 제공합니다.

+0

구현 세부 사항에 더 관심이 있습니다. 나는 Jmeter SVN Repo를 통해 브라우징하고 있지만 당신이 알고 있다면 내가보고 있어야하는 수업을 가르쳐주십시오. – user824212