cURL을 사용한 스트레스 테스트

6188 단어 powershellcurlbash
스트레스 테스트를 위한 많은 도구가 있습니다. RapidAPI , paw , SoapUI , Postman , rest-assured , JMeter 등을 읽으십시오! 나는 그것들이 놀랍다고 확신하지만 그것은 모두 크고 무겁고 느리고 때로는 유료 도구입니다!

필요한 모든 것이 단순하다면(원하는 것에 따라 그렇지 않을 수도 있음) 스트레스 테스트가 있다면 cURL이 숨겨진 보석입니다! cURL은 거의 모든 곳에서 작동하며 Windows에도 curl이 설치되어 있습니다out of the box!

간단한 cURL 요청을 발행하려면 curl http://localhost/path1 와 같이 발행하십시오.

조금 더



path1, path2 및 path3을 테스트해야 하는 경우 어떻게 해야 합니까? 쉬운:

curl http://localhost/path{1,2,3}


그러면 다음이 발행됩니다.

http://localhost/path1
http://localhost/path2
http://localhost/path3

curl http://localhost/path[1-3]로 대체할 수도 있습니다. 즉, 범위를 사용할 수 있습니다!

범위를 혼합할 수 있습니다.

curl http://localhost/path{1,2,3}/subpath[1-3]


발행합니다

http://localhost/path1/subpath1
http://localhost/path1/subpath2
http://localhost/path1/subpath3
http://localhost/path2/subpath1
http://localhost/path2/subpath2
http://localhost/path2/subpath3
http://localhost/path3/subpath1
http://localhost/path3/subpath2
http://localhost/path3/subpath3


문자를 사용할 수도 있습니다.

이미 멋지다!

모든 요청은 순차적으로 실행되므로 괜찮다면(그리고 대부분의 경우) 괜찮을 것입니다.

중대한 범죄



좋습니다. 병렬 로드는 어떻습니까? http://localhost/path-[a-z] 이(가) 구조하러 올 것입니다! 특히 multi-threaded version . 아시다시피 http://localhost/path-a(확장 인수를 나타냄)는 입력에서 라인당 실행으로 포크 실행을 허용합니다. http://localhost/path-z 과 결합하여 공격을 시작할 수 있습니다 😜 xargs는 원하는 입력을 생성할 수 있습니다(숫자만).

1
2
3
4
5


그런 다음 이를 xargs로 파이프하면 5번의 실행이 가능합니다. 즉, seq가 순차적으로 호출됩니다.

http://localhost/path1
http://localhost/path2
http://localhost/path3
http://localhost/path4
http://localhost/path5


하지만 seq를 통과하면 요청을 병렬화할 수 있습니다! 따라서 이것은 5개가 항상 병렬로 진행되는 500개의 요청을 발행하는 방법입니다.

seq 1 500 | xargs -P5 -I{} curl http://localhost/path{}


대상을 완전히 소진해야 하는 경우 더 높은 숫자를 seq 1 5 에 전달하거나 최대화하려면 병렬로 전달xargs하십시오. 공식 매뉴얼 페이지에서:

If max-procs is 0, xargs will run as many processes as possible at a time.


seq 1 5 | xargs -I{} curl http://localhost/path{}는 숫자만 생성하므로 특히 문자의 경우 더 강력한 cURL 범위의 일부 기능을 잃게 됩니다. 그러나 이것도 고칠 수 있습니다.
-P-P 스위치를 지원하여 사용자 지정 형식 문자열을 전달할 수 있지만 이미 0 ( seq )로 형식을 지정하고 있기 때문에 그다지 유용하지 않습니다.

당신은 더 잘할 수 있습니다 - 많은 단어 순열을 생성하십시오! 예를 들어 seq를 선택하고(즉, -f를 설치해야 할 수 있음) 5자 길이의 단어를 생성합니다.

crunch 5 5 -o 5words.txt


파일이 상당히 크고(67mb) 생성하는 데 몇 초가 걸리므로 로컬에 저장합니다. 그런 다음 이 "사전"을 스트레스 테스트의 입력으로 사용합니다.

cat 5words.txt | xargs -n1 -P5 -I{} curl http://localhost/words/{}


그러면 11881376(1,100만!)개의 요청이 병렬로 발행됩니다! 당신이 나에게 묻는다면 충분합니다.

전용 스트레스 도구가 필요합니까? 나는 그렇게 생각하지 않는다.

파워쉘 프렌즈




1..10 | % -Parallel { curl http://localhost/path$_ }

xargs-I{}에 해당하는 "범위 연산자"입니다(적어도 PS에서는 뭔가 더 짧습니다.)
crunch는 병렬 모드에서 선택적으로 실행할 수 있는 apt install crunch 의 별칭입니다.
1..10 플래그는 PowerShell 7 이상에서만 사용할 수 있습니다. seq 1 10 매개변수를 사용하여 병렬 "스레드"의 수를 추가로 제한할 수 있습니다. 그렇지 않으면 무제한입니다(% 'Foreach-Object 와 동일)

PowerShell의 범위도 문자를 사용할 수 있지만 명확하지 않습니다. - -Parallel가 생성됩니다.

a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z

-ThrottleLimit를 수행하여 역 범위를 수행할 수 있습니다.

5
4
3
2
1

좋은 웹페이지 즐겨찾기