Я заметил, что новый сервер, который я настраиваю, довольно медленнее, чем текущий сервер, и провел несколько стресс-тестов / тестов для изучения проблемы.
Но после тестов получаю противоречивые результаты.
Детали машины:
CentOS-6.4 (i386)
Apache 2.4.4
PHP 5.4.17
mySQL 5.6.12
8GB RAM
No cache
Это сайт Joomla.
Одно примечание: в настоящее время доступ к этой машине осуществляется только через VPN (это может быть связано с медлительностью)
Перед проведением тестов я перезапустил httpd и mysql.
Просмотр:
Это является медленнее (не только чувствует, он действительно медленнее при просмотре с любым типом браузера (Safari, Firefox, Chrome, IE), я не измерял его, но он медленнее, чем текущий сайт, и там нет других пользователей).
Отладка через Joomla:
Я включил отладку для домашней страницы, и для визуализации требуется в среднем 1,294 секунды (через журнал этой отладки), тогда как тестирование на текущем сервере (та же конфигурация, но с CentOS 6.3 и PHP 5.3) занимает в среднем 0,762 секунд.
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).
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 это довольно просто:
проверьте свою страницу с помощью такого инструмента, как «YSLOW», который может дать подсказку, где начинаются временные метки.
и я всегда проверял mysql slow_queries и использовал сценарий настройки для оценки, если ваше узкое место - это ваш db. если нет -> (вы это уже сделали) проверьте чистую производительность вашего веб-сервера с помощью простого статического файла; затем с ab; затем исследуйте всю страницу с помощью браузера и некоторых плагинов для веб-мастеров.