Получить все встроенные ресурсы не загружает ресурсы - PullRequest
0 голосов
/ 26 января 2019

У меня очень простой план тестирования Jmeter с группой потоков и поддерживается базовыми элементами конфигурации.My HTTP Request Sampler просто указывает на домашнюю страницу приложения, которая предоставляет средства для аутентификации при входе в систему.

Несколько фактов, которыми можно поделиться

  1. Когда я захожу на страницу в Chrome и просматриваю время загрузки в Chrome Developer, то же самое завершается за 5 секунд со встроенными ресурсами, загруженными впараллельно.

  2. Когда я записываю то же самое через jmeter и начинаю повторное воспроизведение, это занимает 12 секунд

  3. Далее я отключил все не-htmlресурсы и пометил домашнюю страницу для загрузки встроенных ресурсов.

  4. Когда я включаю флажок Загрузить все встроенные ресурсы с параллельной загрузкой и значение, установленное на 6, jmeter переходит в состояние зависания.

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

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

Приложение доступно по протоколу https.

Дамп кучи

"Image Fetcher 0" Id=5734 TIMED_WAITING on java.util.Vector@567840bf
    at java.lang.Object.wait(Native Method)
    -  waiting on java.util.Vector@567840bf
    at sun.awt.image.ImageFetcher.nextImage(Unknown Source)
    at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
    at sun.awt.image.ImageFetcher.run(Unknown Source)

"ResDownload-Thread-5659" Id=5709 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at sun.misc.Unsafe.park(Native Method)
    -  waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
    at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    ...

"ResDownload-Thread-5521" Id=5704 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at sun.misc.Unsafe.park(Native Method)
    -  waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
    at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    ...

"ResDownload-Thread-5545" Id=5703 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at sun.misc.Unsafe.park(Native Method)
    -  waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
    at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    ...

"ResDownload-Thread-5555" Id=5702 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at sun.misc.Unsafe.park(Native Method)
    -  waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
    at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
    at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

Ответы [ 2 ]

0 голосов
/ 28 января 2019
  1. Обязательно установите флажок Disable cache в инструментах разработчика браузера:

    enter image description here

    в зависимости от ситуации ваш браузер не выполняет фактические запросы и не возвращает вложенные ресурсы из дискового или кеш-памяти

  2. Добавьте HTTP Cache Manager в свой план тестирования, чтобы имитировать кеш браузера.
  3. JMeter может не распознавать определенные ресурсы, такие как изображения, встроенные в файлы CSS , поэтому может возникнуть ситуация, когда вы страдаете от ошибки JMeter. Таким образом, вы можете использовать i.e. Parallel Controller в качестве обходного пути для краевых случаев.
0 голосов
/ 26 января 2019

Если вы проводите тестирование на предприятии и, следовательно, имеете корпоративный прокси-сервер, возможно, веб-сайт, на который вы заходите, требует некоторых правил, разрешающих загрузку всех ресурсов, поэтому вам может потребоваться настроить параметры командной строки:

Кроме того, помните, что вам не следует загружать тестирование сторонних веб-сайтов (Google Analytics, трекеры ...), которые может использовать ваше приложение, поэтомуиспользуйте шаблон исключения, чтобы игнорировать это.

Вы говорите, что JMeter зависает, для отладки, используйте Справка> Создать дамп потока и показать содержимое выходного файла в вашем вопросе.

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

  • Время ожидания подключения
  • Время ожидания ответа

Timeouts configuration

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...