Опрос x количества URL-адресов каждую секунду с помощью Java [закрыто]

Можно ли вообще опросить, скажем, 10 000 URL-адресов каждую секунду ? Я всегда помню о потоках с помощью следующего кода:

for (int i = 0; i < 10000; i++) {
    Executors.newScheduledThreadPool(10).scheduleWithFixedDelay(new Runnable() {
        @Override public void run() {
            // Poll URL here
        }
    }, i, 1000, TimeUnit.MILLISECONDS);
}

Я открываю соединение с URL-адресом таким образом (я закрываю его позже, после прочтения):

HttpURLConnection  connection = (HttpURLConnection) new URL("https://stackoverflow.com").openConnection();
connection.connect();

Затем я читаю данные выходного потока:

InputStream inputStream = connection.getInputStream();

Затем я читаю входной поток и закрываю HttpURLConnection.

При опросе 200 URL каждую секунду все работает нормально. При опросе 400+ урлов все задыхается. Подключение к URL занимает 20-30 секунд.

Я тестирую его на Tomcat с Eclipse на моем собственном компьютере (не на сервере). Когда на установление соединений уходит много времени, я даже не могу открывать веб-страницы в браузере. Сценарий использует около 20-30 Мбит / с, в то время как мой Интернет на компьютере имеет максимум 90 Мбит / с.

Если у вас есть предложения, я бы очень хотел их услышать и попробовать.

-1
задан 28 August 2017 в 19:38
1 ответ

Запрос с использованием HEAD может уменьшить объем данных, которые отправляются обратно, что позволяет использовать меньшую полосу пропускания и ускорять запросы.

1
ответ дан 5 December 2019 в 19:42

Теги

Похожие вопросы