170 похожих чатов

Всем привет , есть вопрос , у меня есть мини

приложение , которое тянет с файла скажем так id , и по этим id делает реквесты, там происходят еще некоторые действия и по ссылке которая вытянулась с 1-го реквеста, делается теперь 2-й реквест, всё вроде нормально работает, ну из-за большего количество id, уже не хватает однопоточной мощности, чтоб обработать все id , решил я тут использовать clusterы , кластерами пользовался мало, и пока не особо могу понять как мне решить мою проблему, я так понимаю моё мини приложение нужно require в cluster.isWorker верно? ну тогда моё приложение выполняет код количество раз эквивалентное количеству ядер, И все таки хотел бы узнать как мне правильно сделать, чтоб кластеризовать своё мини приложение, дабы разбить выполнение приложением на воркеры,чтоб обработать большее количество id. Заранее спасибо

28 ответов

25 просмотров

1. как поняли что уперлись в однопоточную мощность? какое там количество ID? 2. как реквесты делаются? 3. эту операцию нужно чем быстрее сделать? или +- 10 сек не играют роли?

это текстовые файлы, которые создержат урлы или id для урлов?

unkfive- Автор вопроса

1) ну грубо говоря на один id выполняется 2 реквеста , после 50 id оно либо зависает, либо выдает ошибку связанную с памятью. Да и в целом очень долго выполняет эти 50 id 2) реквесты выполняется через модуль request 3) ну думаю чем быстрее чем лучше, я пока на тесте проверяю 100-200-300 , ну по итогу нужно будет свыше 5000.

unkfive- Автор вопроса

в текстовом файле содержаться только id , я просто их потом подставляю все, реквест на один хост, только id меняются

request deprecated

тут смотря что отдают эти запросы - обычный html или тяжелые файлы

50 запросов должны думаю где то до 10 сек выполнится если нет проблем на хосте удаленном покажите код

unkfive- Автор вопроса

1-й реквест отдаёт ссылку, при помощи cheerio, 2-й отдаёт n-ое количесто строк, от 1 до 2000 +-

unkfive- Автор вопроса

Ну они то и выполняются секунд 10, ну мне нужно допустим на 1000 id запросы, и тут уже без кластеров никак не справится , поэтому и прошу совета как правильно реализовать

Попробуйте child_process. Воркеры с очередями может быть оверкилл для вашей задачи

> cheerio Вот и найдена проблема. )

> нужно будет свыше 5000. Какой канал, какой размер страницы?

как вариант n-ное кол-во id складывать в отдельный файл, создавать новый процесс и в нем обрабатывать этот файл

unkfive- Автор вопроса

Я думал над этим чтоб разбивать файл на 4 части, и чтоб каждый воркер выполнял 1/4 часть файла, ну пока не до конца понял как это реализовать

unkfive- Автор вопроса

мне всё таки нужно попытаться реализовать это на кластерах

лучше совать по отдельным файла и блокировать файл после обработки удалять файл

unkfive- Автор вопроса

Вы имеете ввиду, что допустим есть 1000 id , оно допустим брало 1-е 100 записало в другой файл , обработало и удалило файл, и потом так же с остальными*

думаю из 1000 id создавало 10 файлов и каждый поток будет брать свой файл только лучше поискать утечку памяти в проге

unkfive- Автор вопроса

разобраться еще как это бы найти , ладно пока и на этом спасибо, дальше гугл)

ключевые слова node js memory leak

const memoryUsage = process.memoryUsage(); console.log('Memory:'); for (let key in memoryUsage) { console.log(`${key} ${Math.round(memoryUsage[key] / 1024 / 1024 * 100) / 100} MB`); }

unkfive- Автор вопроса

Спасибо, это оно должно быть в конце моего приложения?

В каждой итерации

А что с cheerio не так?

Если не считать производительности и синтаксиса, то всё нормально.

Как раз с синтаксисом там все норм, хорошая поддержка селекторов, есть тонкости с итерацией, но это прямо в доке сразу указано

Ну тут на любителя. Мне jquery-синтаксис не кажется нормальным. Особенно с оборачиванием постоянно элементов в $().

Не знаю как у вас, но я один раз когда чирио юзал очень сильно намучился, нужно было пройтись по html таблице , и в доке и в гугле 100 способов это сделать, и я так и не смог ничего толкового из этого получить

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта