Назад | Перейти на главную страницу

несоответствия между стресс-тестом и реальным просмотром

Я заметил, что новый сервер, который я настраиваю, довольно медленнее, чем текущий сервер, и провел несколько стресс-тестов / тестов для изучения проблемы.

Но после тестов получаю противоречивые результаты.

Детали машины:

CentOS-6.4 (i386)
Apache 2.4.4
PHP 5.4.17
mySQL 5.6.12
8GB RAM
No cache

Это сайт Joomla.

Одно примечание: в настоящее время доступ к этой машине осуществляется только через VPN (это может быть связано с медлительностью)

Перед проведением тестов я перезапустил httpd и mysql.

Тесты:

  1. Просмотр:

    Это является медленнее (не только чувствует, он действительно медленнее при просмотре с любым типом браузера (Safari, Firefox, Chrome, IE), я не измерял его, но он медленнее, чем текущий сайт, и там нет других пользователей).

  2. Отладка через Joomla:

    Я включил отладку для домашней страницы, и для визуализации требуется в среднем 1,294 секунды (через журнал этой отладки), тогда как тестирование на текущем сервере (та же конфигурация, но с CentOS 6.3 и PHP 5.3) занимает в среднем 0,762 секунд.

  3. ab:

    Я пробовал одновременно 5 пользователей, делал 1000 запросов, это было сделано с другой машины.

    Я действительно боролся с этим, потому что для статического текстового файла или простого echo e PHP он дал мне следующее:

    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        3    5   1.7      5      17
    Processing:     4    7   1.5      6      20
    Waiting:        4    6   1.5      6      19
    Total:          8   11   2.5     11      27
    

    И домашняя страница Joomla:

    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.3      0       9
    Processing:   321  423 115.8    403    1737
    Waiting:      309  406 114.0    386    1706
    Total:        322  423 115.9    403    1737
    

    Во всяком случае, это быстрее, чем более 1 секунды при просмотре (тест 1).

  4. jmeter (2.9):

    Я провел тест с 5 одновременными пользователями, выполнив 100 запросов с 2-секундным нарастанием.

    Статическая страница дала мне среднее значение:

    label   # Samples   Average Median  90% Line    Min Max Error % Throughoutput   KB/sec
    TOTAL   500 8   8   11  7   21  0.0 92.66123054114159   36.55051195329874
    

    И домашняя страница дала мне это:

    label   # Samples   Average Median  90% Line    Min Max Error % Throughoutput   KB/sec
    TOTAL   500 445 436 507 366 969 0.0 10.331645831180907  856.8125096859179
    

Напоследок вопрос:

Почему такой медленный просмотр, зная, что стресс-тест (либо ab или jmeter) дал мне гораздо более быстрые результаты? (Адекватны ли эти тесты или мне стоит попробовать что-нибудь еще?)

(Я не знаю, может ли здесь быть виновата VPN, но это не объясняет скорость просмотра и скорость тестирования, оба должны быть подключены к VPN).

я подозреваемый Ответ кроется в том, что делают браузеры, jmeter и ab не надо.

А именно файлы cookie и javascript (и в некоторой степени изображения).

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

Когда я захожу на сайт, я не перехожу на главную и не перезагружаю страницу снова и снова. Я хожу и нажимаю на множество разных вещей. Важное различие здесь заключается в том, что если ваш сервер настроен правильно, то много сгенерированного кода операции PHP, сгенерированные фрагменты страницы и т. Д. Попадают в память, поэтому первое попадание выполняется медленно, но все последующие - быстро.

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

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

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

Как сказал Том, вы должны моделировать реальное поведение браузера. Для JMeter это довольно просто:

  1. Добавить HTTP-менеджер файлов cookie
  2. Добавить Менеджер кеширования HTTP
  3. Добавьте диспетчер заголовков HTTP и настройте User-Agent браузера, который вы обычно используете.
  4. В HTTP-запросе или HTTP-запросе по умолчанию в параметрах проверки параметров задачи: получить все встроенные ресурсы из файлов HTML, чтобы имитировать браузер, извлекающий встроенные ресурсы (например, GIF, CSS, JS и т. Д.)
  5. В настройках задачи Option проверьте параметры Использовать параллельный пул. Размер: n. Используйте 2-4 нитки.

проверьте свою страницу с помощью такого инструмента, как «YSLOW», который может дать подсказку, где начинаются временные метки.

и я всегда проверял mysql slow_queries и использовал сценарий настройки для оценки, если ваше узкое место - это ваш db. если нет -> (вы это уже сделали) проверьте чистую производительность вашего веб-сервера с помощью простого статического файла; затем с ab; затем исследуйте всю страницу с помощью браузера и некоторых плагинов для веб-мастеров.