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

Всё про тестирование в Yii 2.0
Ответить
Аватара пользователя
mika_di
Сообщения: 218
Зарегистрирован: 2015.09.24, 11:57

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

Сообщение mika_di »

Как протестировать сайт под нагрузкой, конкретно на многочисленные запросы через поиск?
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

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

Сообщение yan »

есть сервисы, есть проги, из последних использовал https://tech.yandex.ru/tank/ - устанавливается на линукс, крутая вещь
lavros
Сообщения: 13
Зарегистрирован: 2017.01.13, 08:54

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

Сообщение lavros »

можно воспользоваться утилитами wrk и ab не знаю, есть ли они под Windows.
nikitakls
Сообщения: 47
Зарегистрирован: 2011.01.25, 08:18

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

Сообщение 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 и через него по похожему принципу можно тестировать.
Ответить