Рейтинг:1

Команда Curl Отправить асинхронный запрос

флаг sx

Я использую этот запрос curl для отправки данных в API:

curl --location --request POST 'МОЙ_IP' \
--header 'Тип содержимого: текстовый/обычный' \
--данные-сырые '[{
    "идентификатор_события": "123",
}]    
'

Я хочу проверить производительность API, отправив запрос асинхронно, и измерить время, которое я пытался использовать. xargs -P 10 которые говорят, что отправляют 10 запросов параллельно, но не могут этого сделать? Любая помощь и как я могу измерить время?

Мой код:

#!/бин/баш

Тело = '{
    "идентификатор_события": "12",
    "имя_метрики": "API",
    "значение": "1",
    "размеры": {  
    },
    "timestamp_ms": 1615552313
}';

последовательность 1 2 | xargs -n1 -P10 curl --location --request POST '10.33.137.98:8080' --header 'Content-Type: text/plain' --data-raw "$Body"

Но как рассчитать время, такое как P95, P90 и т. д.?

Рейтинг:1
флаг cn

у меня тоже не получилось xargs-P работал, когда мне нужно было сделать что-то подобное, и в итоге я использовал &.

От человек:

Если команда завершается управляющим оператором &, оболочка выполняет команду в фоновом режиме в подоболочке. Оболочка не ожидает завершения команды, и статус возврата равен 0. Такие команды называются асинхронными.

Так что-то вроде этого, может быть?

#!/бин/баш

Тело = '{
    "идентификатор_события": "12",
    "имя_метрики": "API",
    "значение": "1",
    "размеры": {  
    },
    "timestamp_ms": 1615552313
}';

функция запуска () {
    для i в $(seq 1 10); делать
        echo "выполняется задача $i"
        curl --location --request POST '10.33.137.98:8080' --header 'Content-Type: text/plain' --data-raw "$Body" &
    сделано 

    ждать
}

бег времени

Пояснения:

  • время используется для измерения общего времени выполнения, см. мужское время
  • ждать гарантирует, что все фоновые задания будут завершены перед продолжением, в противном случае время будет просто измерять, сколько времени требуется для запуска всех запросов, а не сколько времени требуется, чтобы получить ответ
  • параллельно может также работать вместо &

Чтобы рассчитать статистику, вы можете вывести время каждого запроса, используя секунду время позвоните в за цикла, а затем обработать его, используя ваши любимые инструменты анализа.

Рейтинг:0
флаг ar

Сделайте функцию bash. Назовите это из GNU Parallel. Использовать --журнал заданий чтобы увидеть время.

сделай это() {
    curl --location --request POST 'МОЙ_IP' \
    --header 'Тип содержимого: текстовый/обычный' \
    --данные-сырые '[{
        "идентификатор_события": "123",
    }]    
    '
}
экспортировать -f сделать
последовательность 10000 | parallel -j 10 --joblog my.log doit

Теперь посмотрите на мой.лог.

GNU Parallel имеет накладные расходы 1-10 мс на задание, поэтому, если ваш завитокs очень короткие, вы можете сделать более одного:

последовательность 10000 | parallel -j 10 --joblog my.log 'делаем;делаем;делаем;делаем;делаем;делаем;делаем;делаем;делаем;делаем'

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.