powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Простой HTTPClient c CyclicBarrier
7 сообщений из 7, страница 1 из 1
Простой HTTPClient c CyclicBarrier
    #38605259
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !
пишу простой тест который должен работать на сервере с кучей ядер и эмулировать
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
Простой HTTPClient c CyclicBarrier
    #38605635
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

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

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

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

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

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

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


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