Как назвать сервис URL из сценария оболочки удара параллельно?

Хотя это не могло бы быть идеальное решение Вашей основной проблемы (создающий систему Linux только для чтения), Вы могли исследовать использование Лета. Можно найти инструкцию по установке здесь, но автоматический перевод не является потрясающим, и у меня нет времени для регистрации полного перевода в данный момент. Эмбарго греха, для подведения итогов:

1) Установите необходимые зависимости:

sudo aptitude install aufs-modules-`uname-r` aufs-tools

2) Установите пакет отсюда, если версия существует для Вашего распределения.

3) По умолчанию Лета замораживает все разделы, но можно отредактировать конфигурационный файл для изменения этого (см. руководство по установке, которое я связал с),

4) Установка пакета добавляет aufs = tmpfs к Вашей строке ядра в Вашем меню GRUB, которое загружает систему в замороженное состояние (где все изменения отменены на перезагрузку). Для внесения изменений в систему нажать e когда Вы видите меню GRUB и удаляете эту строку, или удаляете его из системы и обновляете GRUB.

8
04.10.2014, 02:29
3 ответа

Я бы не назвал это многопоточностью, но вы можете просто запустить 70 заданий в фоновом режиме:

for i in {1..70}; do 
   wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0 2>/dev/null &
done

Это приведет к одновременному запуску 70 процессов wget . Вы также можете сделать что-нибудь более сложное, например этот небольшой скрипт:

#!/usr/bin/env bash

## The time (in minutes) the script will run for. Change 10
## to whatever you want.
end=$(date -d "10 minutes" +%s);

## Run until the desired time has passed.
while [ $(date +%s) -lt "$end" ]; do 
    ## Launch a new wget process if there are
    ## less than 70 running. This assumes there
    ## are no other active wget processes.
    if [ $(pgrep -c wget) -lt 70 ]; then
        wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0 2>/dev/null &
    fi
done
13
27.01.2020, 20:08

Попробуйте, и вы получите хорошую статистику:

ab -n 10000 -c 70 http://www.betaservice.domain.host.com/web/hasChanged?ver=0

Этот вызов выполнит 10000 запросов с параллельными 70 запросами.

9
27.01.2020, 20:08

Можно попробовать установить GNU параллельно. Вы могли бы получить некоторые параллельные примеры GNU из здесь .

Тестирование

Я установил gnu-parallel из исходных текстов на своей машине и мог заставить ее работать.

Вы могли установить его из источника из здесь . У меня есть система redhat, поэтому я скачал пакет fedora, а затем запустил .configure, make и make install, чтобы установить parallel в свою систему.

Теперь, после успешной установки, я создал директорию check и запустил команду ниже.

seq 10 | parallel -n0  wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0

Как и ожидалось, вышеуказанная команда загрузила мне 10 копий веб-страницы. Вы могли установить желаемый номер с помощью seq.

Для получения дополнительной информации о том, как выполнять одну и ту же команду параллельно, можно проверить примеры, представленные gnu-parallel из here. Со страницы примера

Если вы хотите запустить одну и ту же команду с одними и теми же аргументами 10 раз параллельно можно сделать:

seq 10 | parallel -n0 my_command my_args

EDIT

Теперь, чтобы воспользоваться преимуществом выполнения parallel, можно использовать команду как,

 seq 70 | parallel -j70 wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0

Вариант -j, который может задать общее количество заданий, которые могут выполняться параллельно, исходя из общего количества ядер процессора.

5
27.01.2020, 20:08

Теги

Похожие вопросы