Помогите решить проблему - Зависание компьютера от Метатрейдер 5 - страница 4

 
Vasiliy Smirnov #:
Виндоус11, не грузится система полностью, даже около. 

Обычно лезу смотреть системные журналы винды, бывает подсказка там. Редко, и расшифровывать еще та задача, но иногда помогает. А так, дамп памяти после зависания и в сервис деск с файлом.

Так же диспетчер задач в реале смотреть тоже иногда помочь может, по крайней мере что за процесс память жрет или что там по сети нагрузки вдруг неподъемные видно.

 

Получил файл дампа подвисшего терминала:

************* Preparing the environment for Debugger Extensions Gallery repositories ************** ExtensionRepository : Implicit UseExperimentalFeatureForNugetShare : true AllowNugetExeUpdate : true AllowNugetMSCredentialProviderInstall : true AllowParallelInitializationOfLocalRepositories : true -- Configuring repositories ----> Repository : LocalInstalled, Enabled: true ----> Repository : UserExtensions, Enabled: true >>>>>>>>>>>>> Preparing the environment for Debugger Extensions Gallery repositories completed, duration 0.000 seconds ************* Waiting for Debugger Extensions Gallery to Initialize ************** >>>>>>>>>>>>> Waiting for Debugger Extensions Gallery to Initialize completed, duration 0.172 seconds ----> Repository : UserExtensions, Enabled: true, Packages count: 0 ----> Repository : LocalInstalled, Enabled: true, Packages count: 36 Microsoft (R) Windows Debugger Version 10.0.25921.1001 AMD64 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [C:\Users\_ZFS_\Desktop\terminal64.DMP] User Mini Dump File with Full Memory: Only application data is available Symbol search path is: srv* Executable search path is: Windows 10 Version 22000 MP (12 procs) Free x64 Product: WinNt, suite: SingleUserTS Edition build lab: 22000.1.amd64fre.co_release.210604-1628 Debug session time: Tue Aug 22 14:30:24.000 2023 (UTC + 3:00) System Uptime: 0 days 4:14:00.525 Process Uptime: 0 days 4:13:15.000 ................................................................ ................... Loading unloaded module list ............. For analysis of this file, run !analyze -v win32u!NtUserGetMessage+0x14: 00007ffa`05a71414 c3 ret

 

Не уверен, что это Ваш случай. Столкнулся недавно с зависанием компа. Причем, сначала загружается и работает, через некоторое время - от часов до минут - затыкается. Сначала думал, перегревается (паста подсохла и т.п.)

Оказалось, что накрылась одна из планок памяти. Снял ее и все нормуль стало. Под конец уже не загружался с ней.

 
Vasiliy Smirnov:

Добрый день, господа программисты! 

Открыто много графиков >50, столько же в обзоре рынка. На каждый наброшен не торгующий советник. Сделана рассинхронизация расчетов советника во времени в зависимости от символа. 

Всё работает отлично, но до поры до времени. В один прекрасный момент один из терминалов (сейчас 3) зависает и не закрыть его уже, сразу виснет компьютер, при попытке закрыть терминал намертво.

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

Загрузка памяти и процессора низкая порядка 30% максимум на все процессы.

Если символов мало (штук 10) такой проблемы нет.

Бывает сразу при запуске виснет - особенно при перезапуске, но обычно поработает какое-то время без тормозов, а потом просто виснет терминал, подвешивая компьютер.

Как будто какой-то буфер переполняется в самом терминале и на этом всё, так происходит 1-3 раза в день, иногда неделями работает всё без проблем. Если переустановить терминал будет некоторое время работать без проблем. Проблема старая от билда не зависит. Железо тоже менялось - ничего не изменилось.

Баров стоит 50000 истории, расчет на меньшем количестве. 

Вопросы:

1. Почему терминал подвешивает весь компьютер?

2. Как найти причину подвисания?

3. Что можно прописать в коде, чтобы избежать этого зависания?

Похоже, причина в нехватке памяти для списка интерактивных окон (тех самых Windows). Лет 12 назад мне не хватало числа терминалов MT4, одновременно работающих на одном компьютере. Об этой проблеме здесь писали, не то чтобы очень много, но даже Ренат Фатхуллин https://www.mql5.com/ru/forum/364079/21794397#comment_21794397.

Это действительно список, не массив, навигация в нем осуществляется функциями Win API вроде FindWindowEx и др. по именам и классам окон. Хранятся в нем много свойств окон, включая их Z-порядок (кто кого затеняет). При Вашем количестве советников (3*50 = 150), а каждому, чтобы получать и отправлять сообщения в ОС, нужно свое окно, напряг запросто может возникать именно из-за нехватки места под 150 интерактивных окон плюс служебные. Мне в свое время удалось довести число одновременно работающих терминалов MT4 (по одному графику, одному скрипту и одному советнику) до 67. Больше - валилась ОС.

Можно (попробовать) править реестр. Я обходился правкой последней из трех цифр в SharedSection=1024,20480,768, и до гораздо меньших значений, чем приведено в примере Рената (SharedSection=1024,65536,65536). Не было столько памяти. А вот "нельзя на 32 бита" просто уже не помню, предполагаю, так и было.

Максимальное количество экземпляров MT5 на одной VM - Объясняли, что можно увеличить количество доступных хендлов на слабых компьютерах.
Максимальное количество экземпляров MT5 на одной VM - Объясняли, что можно увеличить количество доступных хендлов на слабых компьютерах.
  • 2021.04.11
  • www.mql5.com
что такое нельзя делать на 32 битах и на малых размерах физической памяти даже не пытайтесь это делать на 64 Gb RAM. автоматическим торговым системам и тестированию торговых стратегий. Максимальное количество экземпляров MT5 на одной VM
 
Проблема была в "неправильной" компиляции. Закрывал терминал, компилировал код и в последствии вновь открытый терминал зависал. То есть надо было вновь откомпилированный код всегда вешать на график повторно. Проявлялось это только на загруженных более 50 символов терминалах. Так что вот такой вот баг.
 
Vasiliy Smirnov #:
Проблема была в "неправильной" компиляции. Закрывал терминал, компилировал код и в последствии вновь открытый терминал зависал. То есть надо было вновь откомпилированный код всегда вешать на график повторно. Проявлялось это только на загруженных более 50 символов терминалах. Так что вот такой вот баг.

Надо сообщить разработчикам чтоб исправили