Страница 1 из 1

как имитировать нагрузку на сайта

Добавлено: 2018.03.17, 23:16
mika_di
Как протестировать сайт под нагрузкой, конкретно на многочисленные запросы через поиск?

Re: как имитировать нагрузку на сайта

Добавлено: 2018.03.18, 01:15
yan
есть сервисы, есть проги, из последних использовал https://tech.yandex.ru/tank/ - устанавливается на линукс, крутая вещь

Re: как имитировать нагрузку на сайта

Добавлено: 2018.03.18, 10:42
lavros
можно воспользоваться утилитами wrk и ab не знаю, есть ли они под Windows.

Re: как имитировать нагрузку на сайта

Добавлено: 2018.05.26, 22:25
nikitakls
Как вариант можно перенести логику контроллеров, которую хотите протестировать, в сервисы (В этом случае во фронтентде и коноли можно вызывать один и тот же код)

Код: Выделить всё

    /**
     */
    public function actionTask(int $id)
    {
        $result = $this->service->execute($id);
        return $this->render('get-hint', [
            'result' => $result,
        ]);
    }

И протестировать логику через консоль (при этом можно добавить профилирование и т.п. при необходимости)
В консольном контроллере пишем

Код: Выделить всё

    /**
     */
    public function actionTask(int $id, int $tests)
    {
        for($i = 0: $i < $tests, $i++){
        $begin = Yii::getLogger()->getElapsedTime();
          $result = $this->service->execute($id);
          Console::stdout("\r" . round(Yii::getLogger()->getElapsedTime() - $begin, 3));
        }
    }

И далее вызывать тестирование функционала :

Код: Выделить всё

./yii task/task &
Если нужно 2 потока, вызываем 2 раза команду

Код: Выделить всё

./yii task/task &
./yii task/task &
Данный метод хорош, что можно тестировать только нужный функционал (без учета http задержек и тп), и позволяет использовать свои метрики для тестирования.
Еще как вариант написать API и через него по похожему принципу можно тестировать.