서비스 중 하나를 호출하는 컬 명령이 있으므로 서비스 시간이 초과되면 다음과 같은 JSON 응답이 반환됩니다.
[{"results":{"response":null},"error":{"errorCode":1001,"message":"Service Timeout","status":"FAILURE"}}]
아래는 컬 명령을 실행할 때입니다. 시간 초과가 있으면 위의 응답을 얻습니다.
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120";
for 루프에서 위의 컬 명령을 x번 실행합니다. 이제 "message"
JSON 응답을 확인하여 시간 초과된 호출 수를 확인 하고 싶습니다 . 내 말은, 내가 100만 번의 호출을 한다면 몇 번이나 시간이 초과되고, 시간이 초과되는 비율은 얼마나 됩니까?
따라서 컬 명령을 사용하여 루프를 호출하는 다음 줄이 있지만 호출 시간 초과 횟수와 시간 초과 비율을 파악하는 방법을 잘 모르겠습니다. 괜찮나요?
for ((i=1;i<=1000000;i++)); do curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"; done
고쳐 쓰다:-
다음은 명령을 실행한 후 표시되는 출력입니다.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 12798 0 --:--:-- --:--:-- --:--:-- 17384
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 4591 0 --:--:-- --:--:-- --:--:-- 7290
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 6318 0 --:--:-- --:--:-- --:--:-- 8370
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 5252 0 --:--:-- --:--:-- --:--:-- 7793
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 226 100 226 0 0 6139 0 --:--:-- --:--:-- --:--:-- 8071
1
답변1
jq
모든 JSON 관련 텍스트 처리 작업 에 권장됩니다 . 물론 이를 사용하여 JSON 을 구문 분석할 수 있지만 grep
제 생각에는 이것이 올바른 방법이 아닙니다.
시간 초과가 오류 코드 1001과 같다고 가정하는 간단한 예입니다. 반환되는 숫자는 발생한 시간 초과 횟수입니다.
for ((i=1;i<=1000000;i++)); do
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"
done \
| jq '.[].error.errorCode == 1001' | grep -c true
또는 grep을 사용하려는 경우(JSON 응답이 한 줄이라고 가정):
for ((i=1;i<=1000000;i++)); do
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"
done \
| grep -wcoE '"errorCode":1001'