Вопрос

Мы используем JMeter для тестирования нашего приложения PHP, работающего на веб -сервере Apache 2. Я могу загрузить JMeter, чтобы использовать 25 или 50 потоков, и загрузка на сервере не увеличивается, однако время отклика с сервера. Чем больше потоков, тем медленнее время отклика. Похоже, что JMeter или Apache очереди на запросы. Я изменил значение MaxClients в файле конфигурации веб -сервера Apache, но это не меняет проблему. В то время как Jmeter работает, я могу использовать приложение и получить респектабельное время отклика. Что дает? Я ожидаю, что смогу налогообложения моего сервера до 0% на холостом ходу, увеличив количество потоков. Может ли кто -нибудь помочь указать мне правильное направление?

Обновление: я обнаружил, что если я удалю сеансы из моего приложения, я смогу смоделировать полную нагрузку на сервере. Я попытался повторно включить сеансы и использовать HTTP-менеджер Cookie для каждой ветки, но, похоже, это не оказывает влияния.

Это было полезно?

Решение

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

  • Клиент Jmeter должен работать на хорошо оборудованном машине. Я предпочитаю сервер Solaris/Unix, работающий с JVM, но для <200 потоков современная машина Windows подойдет. Jmeter может стать узким местом, и вы не получите никаких значимых результатов, как только это произойдет. Кроме того, он должен работать на отдельной машине к тому, что ваше тестирование и предпочтительнее в той же сети. Задержка WAN может стать проблемой, если ваша испытательная установка и сервер находятся далеко друг от друга.
  • Второе, что нужно проверить, это ваши работники Apache. У Apache есть модуль - mod_status - который покажет вам состояние каждого работника. Можно было бы слишком низко установить размер бассейна. Из MOD_STATUS вы сможете увидеть, сколько работников используется. Для немногих, и у Апача не будет работников для обработки запросов, и запросы будут стоять в очереди. Слишком много, и Apache может исчерпать память на коробке, на которой она работает.
  • Далее вы должны проверить свою базу данных. Если он находится на отдельной машине, база данных может иметь нехватку IO или CPU.
  • Если вы попадаете в узкое место, а сервер и БД находятся на одной машине, вы, как правило, нажимаете ограничение ЦП, ОЗУ или IO. Я перечислил тех, кто в порядке, в котором их легче всего идентифицировать. Если вы получите приложение для CPU, вы можете легко увидеть, как использование процессора составит 100%. Если у вас кончится оперативная память, ваша машина начнет обменять. На Windows и Unix довольно легко увидеть доступную бесплатную оперативную память. Наконец, вы можете быть связаны. Это также можно контролировать с помощью различных инструментов или статистики, но это не так очевидно, как процессор.

Наконец, в частности, к вашему вопросу, единственная вещь, которая выделяется, заключается в том, что можно иметь огромное количество файлов сеансов, хранящихся в одном каталоге. Часто PHP хранит информацию сеанса в файлах. Если этот каталог станет большим, для PHP потребуется все больше времени, чтобы найти сеанс. Если вы запустили свой тест, выключают файлы cookie, приложение PHP, возможно, создало тысячи файлов сеанса для каждого запроса пользователя. На сервере Windows он будет замедляться быстрее, чем на сервере UNIX, делайте различия в способах, которыми каталоги хранятся в двух операционных системах.

Другие советы

Вы используете постоянный таймер пропускной способности? Если Jmeter не может обслуживать пропускную способность с выделенными на него потоками, вы увидите эту очередь и выбросы в время отклика. Чтобы выяснить, является ли это проблемой, попробуйте добавить больше потоков.

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

Попробуйте проверить статический файл, обслуживаемый Apache, а не PHP, чтобы увидеть, находится ли проблема в конфигурации Apache или конфигурации PHP.

Также проверьте свои сетевые подключения и конфигурацию. Наше тестирование Jmeter прогрессировало хорошо, пока оно не попало в стену. В конце концов понял, что у нас было только 100 МБ подключено, и оно было насыщено, и он исправил его. Ваши сетевые карты или коммутатор могут работать с более низкой скоростью, чем вы думаете, особенно если их настройка скорости - «Авто».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top