собираю тики, 32 терминала MT4, все ок, но во время новостей (типа NFP) лаги и теряются тики, ресурсы CPU и RAM <10%.

 
Выделенный сервер, Проц AMD Ryzen 7 7700 8-Core Processor 3.80 GHz, оператива 64 GB.

Запустил 32 MT4, разные брокеры. Собирает тики вообще без проблем, просто песня.
Выходят новости - тики по ряду брокеров не пишутся, жоские лаги, терминалы висят и т.д. Спустя пару минут опять все ок.

Не могу понять, почему так может быть? Может кто знает сколько терминалов максимум держать надо чтобы не было лаг этих, и почему во время новостей?
 
Dimon1000000:
Выделенный сервер, Проц AMD Ryzen 7 7700 8-Core Processor 3.80 GHz, оператива 64 GB.

Запустил 32 MT4, разные брокеры. Собирает тики вообще без проблем, просто песня.
Выходят новости - тики по ряду брокеров не пишутся, жоские лаги, терминалы висят и т.д. Спустя пару минут опять все ок.

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

логи советников, терминалов, без них никак...

 
Многое зависит от сборщика тиков. Например, если по событию, то, возможно, очередь событий переполняется.
 
fxsaber #:
Многое зависит от сборщика тиков. Например, если по событию, то, возможно, очередь событий переполняется.

Дополню: переполнение возникает из-за слишком медленной обработки события. Чтобы этого избежать, нужно как можно быстрее вернуть управление терминалу. Скорее всего, слишком медленная обработка события связана с файловыми операциями. Например, в этом же событии происходит сброс накопленных тиков в файл.

 
Dimon1000000:
Выделенный сервер, Проц AMD Ryzen 7 7700 8-Core Processor 3.80 GHz, оператива 64 GB.

Запустил 32 MT4, разные брокеры. Собирает тики вообще без проблем, просто песня.
Выходят новости - тики по ряду брокеров не пишутся, жоские лаги, терминалы висят и т.д. Спустя пару минут опять все ок.

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

Диски хотя бы SSD?

 
Ihor Herasko #:

Скорее всего, слишком медленная обработка события

Да, вероятнее всего, идет захлебывание событиями: приходят чаще, чем успевают обработаться.

 

Спасибо за отклики!

у меня стоит таймер на 1 ms, я прохожусь по всем инструментам в market watch и сверяю текущий Bid и Ask с с предыдущими, последними известными значениями (которые храню в отдельном массиве). Если котировка изменилась, записываю в файл.
Если дело в операции записи, то я похоже зря отправляю на запись каждый тик, попробую записывать пачками.

Меня смущает, что именно в момент выхода новостей. Может, количество тиков вырастает резко. И лаги почему-то, некоторые терминалы перестают отвечать. Такое поведение нормально из-за файловых операций?

 
JRandomTrader #:

Диски хотя бы SSD?

Диск такой:
1 TB Gen4 NVMe SSDs
 

Желательно не просто писать пачками, а записывать пачку только при низких тиковых объемах. Так вероятность потерять тик будет еще меньше.

Но тики все равно будут теряться, к сожалению.

 
Dimon1000000 #:

Спасибо за отклики!

у меня стоит таймер на 1 ms, я прохожусь по всем инструментам в market watch и сверяю текущий Bid и Ask с с предыдущими, последними известными значениями (которые храню в отдельном массиве). Если котировка изменилась, записываю в файл.
Если дело в операции записи, то я похоже зря отправляю на запись каждый тик, попробую записывать пачками.

Файловые операции на каждом тике - ни в коем случае нельзя. Лучше поставить отдельный таймер (к примеру, каждые 2 минуты) с проверкой количества накопленных тиков. Если больше некоторого количества - сброс в файл. В остальных случаях просто записать в массив. Ну и конечно же не забыть записать в файл при деинициализации.

Меня смущает, что именно в момент выхода новостей. Может, количество тиков вырастает резко.

Так это нормально. Новости порождают повышенную активность участников рынка, что и приводит к резкому увеличению плотности тиков.

 
Ihor Herasko #:
Файловые операции на каждом тике - ни в коем случае нельзя. Лучше поставить отдельный таймер (к примеру, каждые 2 минуты) с проверкой количества накопленных тиков. Если больше некоторого количества - сброс в файл. В остальных случаях просто записать в массив. Ну и конечно же не забыть записать в файл при деинициализации.

Понял, спасибо! Я так понял что более одного таймера на MT4 ставить нельзя, или есть какой-то способ?

Причина обращения: