동시성이 1로 설정되어 있으면이 둘 사이에 차이가 없습니다 . 동시에 둘 이상의 요청이 수행되면 문제가 시작됩니다.
내가 얻는 것에 대한 예를 보자 localhost
.
ab -c 1 -n 1000 http://localhost/
줄게:
Time taken for tests: 3.912 seconds
Time per request: 3.912 [ms] (mean)
Time per request: 3.912 [ms] (mean, across all concurrent requests)
이는 1000 개의 요청을 하나씩 수행하는 데 3.912 초가 필요하다는 것을 의미합니다. 따라서 단일 요청에는 평균 3.912 초 / 1000 = 3.912ms가 필요했습니다.
이제 동시성 수준을 약간 강화 해 보겠습니다.
ab -c 10 -n 1000 http://localhost/
Time taken for tests: 0.730 seconds
Time per request: 7.303 [ms] (mean)
Time per request: 0.730 [ms] (mean, across all concurrent requests)
이번에는 3.912 초 대신 작업을 완료하는 데 0.730 초만 필요합니다. 0.730 초 동안 1000 건의 요청을 수행 했으므로 한 건의 요청에는 평균 0.730 초 / 1000 = 0.730ms (마지막 줄)가 소요됩니다. 그러나 현재 10 건의 요청을 동시에 수행하고 있기 때문에 상황이 약간 다릅니다. 실제로 여기에있는 우리의 숫자는 하나의 요청을 완료하는 데 걸리는 실시간을 반영하지 않습니다 . 0.730ms * 10 (동시 요청 수) = 7.303ms 비동 시적으로 (또는 현재의 동시성 수준에서 격리 된 방식으로) 더 정확하게 실행 된 경우 단일 요청을 완료하는 데 평균 시간이 걸립니다.
마지막으로 본 숫자 (0.730ms)는 -n 1001
현재 동시성 수준을 사용하여 하나의 요청 ( )을 추가 한 경우 총 시간이 얼마나 증가하는지 대략적으로 나타내는 데 사용됩니다 -c 10
(적어도 이론적으로는 그렇습니다).
7.303ms는 단일 격리 요청이 얼마나 오래 실행되는지에 대한 개요를 제공합니다.
예제 -c 1
와 -c 10
다음 사이의 변경 사항 :
[-c 1 ]: Time per request: 3.912 [ms] (mean)
[-c 10]: Time per request: 7.303 [ms] (mean)
하나의 요청이 실행중인 유일한 요청 인 경우 더 빨리 실행됨을 의미합니다 -c 1
. -c 10
리소스와 경쟁하는 여러 요청이있는 경우 단일 요청을 완료하는 데 시간이 더 걸립니다. 그러나 동시에 10 건의 요청을 수행한다는 사실을 고려하면이 7.303 ms에서 1 대신 10 건의 요청을 처리합니다.
따라서 단일 요청에 대한 지연 측정 기준으로 7.303ms가 더 유용합니다. 그러나 성능 측정 기준으로 0.730 ms가 더 의미가 있습니다. 실제로 0.730ms <3.912ms 인 경우 10 개의 동시 요청을 허용하면 초당 더 많은 요청을 집계 할 수 있습니다.