Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Простой HTTPClient c CyclicBarrier / 7 сообщений из 7, страница 1 из 1
04.04.2014, 12:01
    #38605259
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой HTTPClient c CyclicBarrier
Добрый день !
пишу простой тест который должен работать на сервере с кучей ядер и эмулировать
100 и более одновременных запросов одновременно к другому серверу ...

помогите допилить тест :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;


public class HTTPClientCyclicBarrier implements Runnable {

    private static int TOTAL = 20;
    private static int COUNT = 10; //  количество запросов которые мы будем запускать одновременно.
    
    private static ExecutorService executorService = Executors.newFixedThreadPool(COUNT);
    private static CyclicBarrier  cyclicBarrier = new CyclicBarrier(COUNT);
    
    
    interface Lambda {

        void apply();
    }
    
    @Override
    public void run() {
        try {
            System.out.println("WAIT...");
             cyclicBarrier.await();
             System.out.println("LOADING...");
             test();
              System.out.println("FINISH");
        } catch (InterruptedException ex) {
            Logger.getLogger(HTTPClientCyclicBarrier.class.getName()).log(Level.SEVERE, null, ex);
        } catch (BrokenBarrierException ex) {
            Logger.getLogger(HTTPClientCyclicBarrier.class.getName()).log(Level.SEVERE, null, ex);
        }
       
    }



   static  long timeIt(Lambda lambda) {
        long start = System.nanoTime();
        lambda.apply();
        long end = System.nanoTime();
        long result = end - start;
        System.out.println("Time spent: " + (result) / 1000000000d + " sec\n");
        return result;
    }

    private void simpleClient() throws MalformedURLException, IOException, InterruptedException, BrokenBarrierException {
       
        URL url = new URL("http://www.yandex.ru/");
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            String s = inputLine;
        }
    }

    private void test() {
        timeIt(new Lambda() {
            @Override
            public void apply() {
                try {
                    simpleClient();
                } catch (Exception e) {
                    System.out.println(e);
                }

            }
        });
    }

    public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException {
        for (int i = 0; i < TOTAL; i++) {
               HTTPClientCyclicBarrier barrier = new HTTPClientCyclicBarrier();
               executorService.submit(barrier);
        }
            
        executorService.awaitTermination(2L, TimeUnit.SECONDS);
        executorService.shutdown();
        
    }
}


...
Рейтинг: 0 / 0
04.04.2014, 16:08
    #38605635
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой HTTPClient c CyclicBarrier
Atum1,

собственно нагрузкой является просто кол-во одновременно запущенных процессов или я не понял ? если запросы эмулировать, то суть теста в чем?
...
Рейтинг: 0 / 0
04.04.2014, 18:30
    #38605769
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой HTTPClient c CyclicBarrier
ОзверинAtum1,

собственно нагрузкой является просто кол-во одновременно запущенных процессов или я не понял ? если запросы эмулировать, то суть теста в чем?

эмуляция одновременно долбящихся на сервер пользователей - насколько это возможно в рамках одной машины .
т.е. идеально чтобы 100 пользователей одновременно создавало и создавало по 100 запросов... раз за разом.
...
Рейтинг: 0 / 0
04.04.2014, 19:40
    #38605821
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой HTTPClient c CyclicBarrier
На готовом велосипеде кататься не пробовали?
...
Рейтинг: 0 / 0
04.04.2014, 19:42
    #38605822
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой HTTPClient c CyclicBarrier
Atum1эмуляция одновременно долбящихся на сервер пользователей - насколько это возможно в рамках одной машины
Код: sql
1.
ab -c 500 -n 100000 http://бедный.сайт/
...
Рейтинг: 0 / 0
05.04.2014, 20:14
    #38606193
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой HTTPClient c CyclicBarrier
Basil A. Sidorov,

JMeter , спасибо пробовал , как я понял там нет возможность собрать на барьере N тредов ?

Код: java
1.
ab -c 500 -n 100000 http://бедный.сайт/

- да отличное решение :)
...
Рейтинг: 0 / 0
05.04.2014, 20:17
    #38606194
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой HTTPClient c CyclicBarrier
В C++ можно каждому треду указать свой процессор ,т.е фактически можно запустить 64*2 - 1 тредов ( если сервер с мультитрейденгом) - а в java можно как то указать на каком из процессоров будет выполняться тред?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Простой HTTPClient c CyclicBarrier / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]