2016-09-06 3 views
0

Как мы можем trigger одновременных запросов в JMeter ...Параллельное AJAX звонки в Jmeter

Я не говорю о не являющихся -html элементов (где у нас есть положение в JMeter, чтобы загрузить их одновременно).

У меня есть несколько AJAX звонки можно скачать одновременно ...

ответ

0

В соответствии с JMeter 3.0 нет приемлемых элементов Test, вам необходимо:

  • пойти на JSR223 Sampler + Groovy language и Apache HTTP Components (которые являются составными частями JMeter)
  • или разработать свой собственный пробник, чтобы преодолеть ограничение группы нитей JMeter и запустить дополнительные потоки для выполнения вызовов AJAX.

Пример JSR223 Sampler Код:

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; // necessary imports 


List<String> urls = new ArrayList<String>(); // initialize array of URLs 
Collections.addAll(urls,args); // read URLs from "Parameters" input and add them to array 
ExecutorService pool = Executors.newFixedThreadPool(urls.size()); // initialize pool of Future Tasks with number of threads equal to size of URLs provided 
for (String url : urls) { // for each URL from list 
    final String currentURL = url; 
    pool.submit(new Runnable() { // Sumbit a new thread which will execute GET request 

     @Override 
     public void run() { 
      try { 
       HttpClient client = new DefaultHttpClient(); // Use Apache Commons HTTPClient to perform GET request 
    HttpGet get = new HttpGet(currentURL); 
    HttpResponse response = client.execute(get); 
HttpEntity entity = response.getEntity(); 
EntityUtils.consume(entity); 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 

     } 
    }); 
} 
pool.shutdown(); // shut down thread pool 

Подробнее: How to Load Test AJAX/XHR Enabled Sites With JMeter

+0

Спасибо за ответ. У меня есть запрос на это, это создаст новые потоки, и это не будет мешать моему счету общего количества потоков? Предположим, что я выполняю тест с 50 пользователями (потоками), теперь, если я создам пул из 10 потоков, бремя на сервере будет увеличиваться. –

+0

Да, именно так работают запросы AJAX, более того, это также то, как работает JMeter, когда он загружает встроенные ресурсы, используя параллельный пул потоков. Для получения дополнительных советов о том, как сделать ваш тест JMeter более реалистичным, посмотрите [Как сделать JMeter более похожим на реальный браузер] (https://guide.blazemeter.com/hc/en-us/articles/206733719-How-to-make -JMeter-behave-more-like-a-real-browser) –

+0

@DmitriT - Есть ли способ получить тело ответа? потому что "response.getEntity();" дает вам только заголовки ответов. –

Смежные вопросы