TPS 산출공식을 알고싶습니다.
서버 테스트툴을 직접 개발하고있습니다....
TPS를 산출하고 싶은데 일반적인 공식은 밑의 공식으로 알고있습니다.....
① TPS = (Active User) / (Average Response Time) – F1
② TPS = (Concurrent User) / (Request Interval) – F2
③ Active User = TPS * (Average Response Time) – F3
④ Active User = (Concurrent User) * (Average Response Time) / (Request Interval) – F4
⑤ Active User = (Concurrent User) * (Average Response Time) / [ (Average Response Time) + (Average Think Time) ] – F5
클라이언트에서 Agent(process*thread)를 만들어 목표 서버의 요청 패킷을 보내고 응답 패킷을 받는 시간을 구하고 각 모든 Agent가 구한 시간을 합산하여 Agent수 만큼 나누어 Average response time을 구하여 TPS를 구하는 방법과 프로그램이 돌아하는 총 런닝타임인 Runnig Time을 모든 Thread의 합산시간에서 나누는 공식인
process*thread/Average response time과
process&thread/running time 으로 둘 다 해봤는데 다른 테스트툴에서 측정되는 TPS와 큰 차이를 보였습니다.....
실질적으로서버는 8개의 working Thread가 돌아가서 8개씩 처리를 하고 있어서 9번째 응답시간부터 점점 체크시간이 늘어나는 현상을 보이고 있구요 이것을 다더해서 Agent수로 나누어 평균을 구하고있습니다.....
결론적으로 현재 구할수 있는시간
프로그램 running time(모든 쓰레드가 요청을 하고 응답을 받고 출력하는 시간는 RealTtime)
응답 평균 시간 (각 쓰레드가 응답 패킷을 받는데 걸린 모든 시간을 합산 하여 쓰레드 수 만큼 나눈 시간)
응답 총 시간(모든 쓰레드가 응답패킷을 받는 시간을 더 한 수)
이 세가지의 시간으로 TPS를 구할수 있을지 의문입니다.....
100개의 Agent를 만들고 응답을 받은 예시로
1번째 Agent 응답시간 time:0.064000
100번쨰 Agent 응답시간 time:0.873000
total time: 46.594996
Average time 0.465950
running time :0.954
등이 있습니다. 제가 구한 바로는 100(Agent수)/0.465950(Average time)=214.6.... 이 나오는데.....
이값이 맞나 싶기도 하구요.... grinder테스트툴 체크 TPS보다 터무니 없이 빠른 속도 입니다.
아직 답변이 없네요 추가 적으로 시간개념과 처리량 개념을 넣었습니다.
Agent수를 설정하고 그 Agent가 1분동안 받은 패킷의 수를 처리량으로 설정하여
처리량/60 과 같이 계산을 해보았습니다.
TPS에 어떤것이 제일 근접한 수치일까요?
댓글 달기