Перейти к содержимому

Фотография

Может ли JMeter врать?


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 aka_engel

aka_engel

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Valentin Al. Sitnick

Отправлено 08 июля 2013 - 10:44

Привет.
Появилось желание протестить серверок POST запросами. Написал маленький классик, к нему тред и вроде счастлив - даже результаты получаю, но не долго радовался. Послал те же запросы через JMeter и расстроился. Результаты - время обработка запроса полученные с помощью JMeter в 10 раз меньше чем в моем коде.

public class ApacheHttpPostSender {

    static File dataFolder = new File("~/data");

    static ArrayList<File> files = new ArrayList();
    static ArrayList<HttpPost> posts = new ArrayList();

    static int tNumber = 10;
    static int tInterval = 1000;

    public static void main(String[] args) {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http:xxx.xxx.xxx/sendMessage");

        for (final File fileEntry : dataFolder.listFiles()) {
            if (fileEntry.isDirectory()) continue;
            files.add(fileEntry);
        }

        for (int i = 0; i < tNumber; i++) {

            MultipartEntity entity = new MultipartEntity ();
            try {
                FileBody fileBody = new FileBody(files.get((new Random()).nextInt(files.size())), "image/jpeg");
                entity.addPart("content", fileBody);
                entity.addPart("json", new StringBody("{to:98768765454376565987670987,type:image}"));
                entity.addPart("token", new StringBody("bvcnbvcjgfglnbmnbcbvxjg_654309"));
                //entity.
            } catch (IOException ioe) { ioe.printStackTrace(); }

            post.setEntity(entity);
            posts.add(post);
        }

        for (int i = 0; i < posts.size(); i++) {
            (new ApacheHttpPostSenderThread(posts.get(i), i, (new Random()).nextInt(tInterval))).start();
        }
    }
}

Время запроса меряю как

long tBefore = System.currentTimeMillis();
HttpResponse response = client.execute(post);
long tAfter  = System.currentTimeMillis();

Вроде все примитивнее не придумаешь... Но результаты разнятся...

public class ApacheHttpPostSenderThread extends Thread {

    private HttpPost post;
    private int delay_miliseconds;
    private int thread_index;

    ApacheHttpPostSenderThread(HttpPost post, int thread_index, int delay_miliseconds) {
        super();
        this.post = post;
        this.delay_miliseconds = delay_miliseconds;
        this.thread_index = thread_index;
    }

    public void run() {
        try {
            long heapSize = Runtime.getRuntime().totalMemory();

            Thread.sleep(delay_miliseconds);

            HttpClient client = new DefaultHttpClient();
            System.out.println("Thread " + this.thread_index + ": START!!! ");

            long tBefore = System.currentTimeMillis();
            HttpResponse response = client.execute(post);
            long tAfter  = System.currentTimeMillis();

            client.getConnectionManager().shutdown();

            BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

            String line = "";
            while ((line = rd.readLine()) != null) {
                System.out.println(line);
            }
            
            System.out.println(" ---> " + (tAfter - tBefore) + " miliseconds.");

        } catch (Throwable tex) { tex.printStackTrace(); }
    }
}

Может я что-то пропустил и мой код немыслимо тормозит, может Jmeter где-то что-то не то меряет...
Пробовал посылать и сановским HttpUrlConnection и апаческим Http клиентом. Результаты и них похожи но с JMeter не совпадают...

В чем может быть проблема?
  • 0

#2 Al_chimic

Al_chimic

    Новый участник

  • Members
  • Pip
  • 16 сообщений

Отправлено 11 июля 2013 - 10:04

Какое время выполнения запроса покажут:
firebug в FF
Инструменты разработчика в IE?

Цифра получится ближе к вашей или к JMeter?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных