Puncte:1

Comanda Curl Trimite cerere asincronă

drapel sx

Folosesc această solicitare curl pentru a trimite date către API:

curl --location --request POST 'MY_IP' \
--header „Content-Type: text/plain” \
--data-raw ' [{
    "event_id": "123",
}]    
'

Vreau să verific performanța API-ului trimițând cererea asincron și să măsor timpul pe care am încercat să îl folosesc xargs -P 10 care spune că trimiteți 10 cereri în paralel, dar nu puteți face acest lucru? Ajutor și cum pot măsura timpul?

Codul meu:

#!/bin/bash

Corp='{
    "event_id": "12",
    "metric_name": "API",
    "valoare": "1",
    "dimensiuni": {  
    },
    „timestamp_ms”: 1615552313
}';

secv 1 2 | xargs -n1 -P10 curl --location --request POST '10.33.137.98:8080' --header 'Content-Type: text/plain' --data-raw "$Body"

Dar cum se calculează timpul ca P95, P90 etc?

Puncte:1
drapel cn

Nici eu nu am putut obține xargs -P lucrând când trebuia să fac ceva similar și am ajuns să folosesc &.

Din man bash:

Dacă o comandă este terminată de operatorul de control &, shell-ul execută comanda în fundal într-un subshell. Shell-ul nu așteaptă ca comanda să se termine, iar starea de returnare este 0. Acestea sunt denumite comenzi asincrone.

Deci ceva de genul acesta, poate?

#!/bin/bash

Corp='{
    "event_id": "12",
    "metric_name": "API",
    "valoare": "1",
    "dimensiuni": {  
    },
    „timestamp_ms”: 1615552313
}';

function run() {
    pentru i în $(sev 1 10); do
        echo "rularea sarcinii $i"
        curl --location --request POST '10.33.137.98:8080' --header 'Content-Type: text/plain' --data-raw "$Body" &
    Terminat 

    aștepta
}

timpul alergat

Explicatii:

  • timp este folosit pentru a măsura timpul total de execuție, vezi timp de om
  • aștepta se asigură că toate lucrările de fundal se termină înainte de a continua, în caz contrar timp ar măsura doar cât timp să lanseze toate solicitările, nu cât a fost nevoie pentru a obține un răspuns
  • paralel ar putea funcționa și în loc de &

Pentru a calcula statistici, ați putea afișa ora fiecărei solicitări, folosind o secundă timp sunați la pentru buclă și apoi procesați-o folosind instrumentele de analiză preferate.

Puncte:0
drapel ar

Faceți o funcție bash. Apelați-l din GNU Parallel. Utilizare --jolog pentru a vedea sincronizarea.

Fă-o() {
    curl --location --request POST 'MY_IP' \
    --header „Content-Type: text/plain” \
    --data-raw ' [{
        "event_id": "123",
    }]    
    '
}
export -f doit
secv 10000 | paralel -j 10 --joblog my.log doit

Acum uită-te la my.log.

GNU Parallel are o suprasarcină de 1-10 ms per job, deci dacă dvs răsuciSunt foarte scurte, puteți face mai multe:

secv 10000 | paralel -j 10 --joblog my.log 'doit;doit;doit;doit;doit;doit;doit;doit;doit;doit'

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.