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

Такой вопрос. У меня мелкое приложение, конектится к бирже по

сокетам и постоянно получает большое количество данных, которые потом обрабатываются(куча операций над реально маленькими массивами). И видимо из-за блокирующих операций пропускная способность падает, мой сервер не успевает ответить бирже Понг и биржа меня отключает. Вообще печально что нода не справляется с таким объёмом инфы и вычислений, имхо, не так уж их много. Но что можно предпринять в этом случае?

Я вот думаю, раз одно приложение забивает себе ивент луп, то может на микросервисы разбить, пусть даже на одном и том же хосте? Первое приложение коннектится с биржей и передаёт данные другим двум, а те уже проводят вычисления, потом сливают данные в общак третьему. Таким образом появятся 2 вычислительные ноды без перегрузки ивентлупа. Но всё так же на одном сервере, процессорные мощности они же между собой поделят я так понимаю.
Но это как то грустно, получается standalone приложение уже склепать не получится чисто из-за того что нода не справляется. Плюс разбивать функционал на несколько приложений немного времязатратно будет, само-то приложение сейчас очень мелкое, строк 200 своего кода, как-то нелепо это ещё разбивать на другие приложения.
Можно ли сделать что-то ещё в моем случае для оптимизации? Вы бы что сделали с такой проблемой?

5 ответов

19 просмотров

Для начала можно не разбивать, но хотя бы "тяжёлые вычисления" отдавать воркеру, а не блочить эвентлуп. Больше асинхронгости

Код в студию. Кажется это на вашей стороне проблема.

Вы установили необязательные бинарные зависимости к модулю ws?

Opt-in for performance and spec compliance There are 2 optional modules that can be installed along side with the ws module. These modules are binary addons which improve certain operations. Prebuilt binaries are available for the most popular platforms so you don't necessarily need to have a C++ compiler installed on your machine. npm install --save-optional bufferutil: Allows to efficiently perform operations such as masking and unmasking the data payload of the WebSocket frames. npm install --save-optional utf-8-validate: Allows to efficiently check if a message contains valid UTF-8 as required by the spec.

1. Это делать максимально ассинхронно. 2. Если у тебя не нужно отдавать результат твоих вычислений, то сразу отвечай понг, а сами вычесления перенеси в воркер например. 3. Еще вариант поигратся с воркерами и месседж брокером (кафка, раббит). Лично я бы предпочтел 3 вариант. Так как в случае отказа или падений мы брокеры имеют возможность поаторно отправить данные на обработку, что, я подозреваю, в твоем случае критично. А еще при таком подходе будет проще распределять нагрузку

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта