Cannot set timer после успешного запуска EvenSetTimer()

 

Знаю что есть похожие ветки, но решение не было найдено. 

Build 1170, на одном из ПК появляется ошибка Cannot set timer. Иногда она появляется в OnInit() при первом запуске, иногда после UninitReason 5 (смена инпутов), а иногда таймер слетает в процессе работы после корректного запуска EventSetTimer().  Я начал отлавливать в OnTick() момент, когда OnTimer() перестает работать и пытаюсь перезапускать EventSetTimer() на OnTick(). Иногда это получается с первого раза, иногда с 10.  Проблема появилась несколько дней назад, до этого более месяца никогда не появлялась эта ошибка.

GetLastError возвращает 4024 - Внутренняя ошибка (так себе пояснение).

Терминал переустанавливал, ПК перезагружал - не помогает.

Можно перевести на OnTick(), но ЕА мультивалютный (хочу разобраться в ошибке OnTimer()).

Может быть у кого нибудь появятся какие-то мысли? Вот кусок лога, как видно - таймер слетает довольно часто:


 

есть такая ошибка, когда таймер забивается заданиями.... 

Когда их слишком много и большая очередь. 

Забивается память

У меня таймер отключался именно по ошибке нехватки памяти. Я наблюдал за процессором и памятью. 

В таймере надо сократить расчеты. 

 
Vladislav Andruschenko:

есть такая ошибка, когда таймер забивается заданиями.... 

Когда их слишком много и большая очередь.

Это ошибка терминала. Которую разработчики не хотят признавать за ошибку могут исправить уже несколько лет.

Почему терминала?

Да банально потому что вначале, когда таймеры только появились, этой ошибки не было.

И потому что я специально смотрел количество разрешенных хендлов по умолчанию, на превышение которого упирал Слава.

Так вот 10000. Столько хендлов может открыть один процесс. Это значение можно увеличить. И достичь такой планки можно только в случае если хендлы в терминале текут. Не говоря уже про то, что эту ошибку раньше ловили в том числе практически после старта терминала.

 
TheXpert:

Это ошибка терминала. Которую разработчики не хотят признавать за ошибку могут исправить уже несколько лет.

Почему терминала?

Да банально потому что вначале, когда таймеры только появились, этой ошибки не было.

И потому что я специально смотрел количество разрешенных хендлов по умолчанию, на превышение которого упирал Слава.

Так вот 10000. Столько хендлов может открыть один процесс. Это значение можно увеличить. И достичь такой планки можно только в случае если хендлы в терминале текут. Не говоря уже про то, что эту ошибку раньше ловили в том числе практически после старта терминала.


Я помню, что ошибка появилась с какого то билда. Потом была большая ошибка с утечкой памяти. Которую исправили. 
Сейчас таймер слетает очень редко. Но слетает. 
Как мне показалось именно из-за того, что забивается очередь заданий. 
 
Может дело в старом Build 1170 ?  Где эта ошибка не исправлена.
Если есть возможность, проверьте на последних релизах, может что и изменили.
Или как предположил Владислав, не хватает оперативки, тоже возможно.

У меня с таймером не разу не было проблем. ОЗУ 16 Gb
Даже c 
EventSetMillisecondTimer(20);
 
Roman:
У меня с таймером не разу не было проблем. ОЗУ 16 Gb
Даже c 
EventSetMillisecondTimer(20);

32гб, проблемы были.

 
TheXpert:

32гб, проблемы были.

подтверждаю. 

и 32 гига вызывает проблемы. 

Но слетает таймер именно тогда, когда терминал грузит память и бац... слетел таймер. 

 
Понятно, буду иметь ввиду такое поведение.
Но пока не сталкивался с таким, возможно потому что в таймере у меня нет высоконагруженных расчётов.
Но в таймере обрабатывается свой входящий поток рассчитанных данных, с частотой потока 1мс.
То есть в теории, очередь обработки создаётся, но память не течёт, и таймер не вылетает.
А из за модели камня не может быть какой то зависимости?
На борту I7
 

На VPS с 1 Гб при одновременном запуске нескольких терминалов с несколькими экспертами - всегда. Помогает поочередный запуск терминалов, сначала MT5, затем MT4.

Только не говорите опять, что памяти экстремально мало. Это и так понятно. Я просто к тому, что проблема с таймером действительно из-за памяти.

PS. Проблема в обеих платформах.

 

Edgar:

Я просто к тому, что проблема с таймером действительно из-за памяти.

На дешевом VPS проблема эээ просто со всем с чем может быть проблема ))

И это не отменяет того факта, что в терминале есть баг, который не могут дочинить уже несколько лет.

 
Edgar:

На VPS с 1 Гб при одновременном запуске нескольких терминалов с несколькими экспертами - всегда. Помогает поочередный запуск терминалов, сначала MT5, затем MT4.

Только не говорите опять, что памяти экстремально мало. Это и так понятно. Я просто к тому, что проблема с таймером действительно из-за памяти.

PS. Проблема в обеих платформах.

Не знаю как у вас проблема с таймером. Но например у меня при гектаре ОЗУ, работают 4 терминала MT4/5. На каждом мультивалютный эксперт торгующий одновременно по 12-ть символов. Работают через таймер, понятно из-за того что тики на символы приходят по разному. И ни каких проблем не возникало. Спокойно работают неделю, в выходные VDS перезагружается. Да может быть я выигрываю тем что использую SWAP на 1 гектар в дополнение.

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