Рабочие тысячи вихревых фоновых процессов параллельно в сценарии удара

Лучшая вещь сделать, если Вы хотите видеть производительность на длительном периоде, состоит в том, чтобы использовать Centreon, который является, мощные инструменты основываются на Nagios. Centreon делают Вас способными контролировать путем рисования графиков действий ресурса и партии других вещей.

13
18.11.2013, 22:21
2 ответа
for i in {1..100000}

Существует только 65 536 портов. Отрегулируйте это.

for n in {1..100000..1000}; do   # start 100 fetch loops
        for i in `eval echo {$n..$((n+999))}`; do
                echo "club $i..."
                curl -s "http://some_url_here/"$i  > $i.txt
        done &
        wait
done

(редактирование: echocurl
(редактирование: разделите сильно датированное утверждение о пределах ОС и добавьте пропавших без вести wait)

2
27.01.2020, 19:53
  • 1
    На самом деле ОС может обработать это очень хорошо. Это - ограничение TCP. Никакая ОС, неважно, как особенный, не сможет обойти его. Но 4k соединения OP нигде не рядом 64k (или 32k значение по умолчанию некоторых дистрибутивов) –  Patrick 22.12.2013, 22:28
  • 2
    @Patrick хорошо, я принял то участие, это избыточно с невосполнимым пределом дизайна, но взглядом на комментарий zavg к 7-му. –  jthill 23.12.2013, 02:08

После вопроса строго:

mycurl() {
    START=$(date +%s)
    curl -s "http://some_url_here/"$1  > $1.txt
    END=$(date +%s)
    DIFF=$(( $END - $START ))
    echo "It took $DIFF seconds"
}
export -f mycurl

seq 100000 | parallel -j0 mycurl

Короче, если вам не нужен текст шаблона в районе таймингов:

seq 100000 | parallel -j0 --joblog log curl -s http://some_url_here/{} ">" {}.txt
cut -f 4 log

Если вы хотите параллельно запускать 1000s, то вы столкнетесь с некоторыми ограничениями (например, с файловыми дескрипторами). Повышение ulimit -n или /etc/security/limits.conf может помочь.

11
27.01.2020, 19:53

Теги

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