Проблема с оперативной памятью Lua на Windows Server 2019

Страницы: 1
RSS
Проблема с оперативной памятью Lua на Windows Server 2019
 

Здравствуйте!

Использую коннектор QUIKSharp для соединения своего робота на C# с Квиком. До того момента, когда я решил арендовать сервер под Windows Server 2019 и запустить все там, никаких проблем не было. Периодически менялись версии терминала по мере обновления у брокера, но все замечательно работало около полугода или больше. Неделю назад заказал сервер, установил туда Quik версии 9.2.3.15, закинул коннектор, робота, все запустил, и спустя какое-то время система стала сильно тормозить. Обнаружил, что Квик занимает слишком много оперативной памяти, причина оказалась в скрипте коннектора QUIKSharp. Поднял память сервера с 3 до 4 Гб, но он занимает все, что найдет, и сервер падает.

Сначала думал, что дело в роботе, потом думал, что дело в коннекторе, но все и по сей день без нареканий работает на двух компах под Windows 10, даже если не выключать все несколько суток, кстати и сам только что запущенный терминал с одинаковыми настройками и без скрипта на них занимает раза в два меньше памяти (около 150 - 250 Мб против 500 на сервере). Все происходит независимо от подключения робота, хотя с ним процесс протекает быстрее, просто в определенный момент (иногда почти сразу, иногда спустя пару минут) память, используемая скриптом перестает освобождаться и дальше он только разрастается.

Повторюсь, на Win10 никаких проблем нет. Прошу помочь и подсказать, какое отличие серверной машины или же операционки Windows Server 2019 от стационарного компа или Windows 10 приводит к тому, что на первых QLua перестает справляться с уборкой мусора. Может, не установил туда что-то или не настроил?

 
Цитата
Руслан написал:
Здравствуйте!   Использую коннектор QUIKSharp для соединения своего робота на C# с Квиком. До того момента, когда я решил арендовать сервер под Windows Server 2019 и запустить все там, никаких проблем не было. Периодически менялись версии терминала по мере обновления у брокера, но все замечательно работало около полугода или больше. Неделю назад заказал сервер, установил туда Quik версии 9.2.3.15, закинул коннектор, робота, все запустил, и спустя какое-то время система стала сильно тормозить. Обнаружил, что Квик занимает слишком много оперативной памяти, причина оказалась в скрипте коннектора QUIKSharp. Поднял память сервера с 3 до 4 Гб, но он занимает все, что найдет, и сервер падает.   Сначала думал, что дело в роботе, потом думал, что дело в коннекторе, но все и по сей день без нареканий работает на двух компах под Windows 10, даже если не выключать все несколько суток, кстати и сам только что запущенный терминал с одинаковыми настройками и без скрипта на них занимает раза в два меньше памяти (около 150 - 250 Мб против 500 на сервере). Все происходит независимо от подключения робота, хотя с ним процесс протекает быстрее, просто в определенный момент (иногда почти сразу, иногда спустя пару минут) память, используемая скриптом перестает освобождаться и дальше он только разрастается.  Повторюсь, на Win10 никаких проблем нет. Прошу помочь и подсказать, какое отличие серверной машины или же операционки Windows Server 2019 от стационарного компа или Windows 10 приводит к тому, что на первых QLua перестает справляться с уборкой мусора. Может, не установил туда что-то или не настроил?
Н-да, к сожалению телепатией не обладаю.
Если хотите помощи, то выкладывайте для начала что и сколько занимает, как загружен процессор, сколько у вас свободной памяти, когда квик не работает.
Как вы запускаете сборку мусора. Как и что освобождаете из ненужного.
Попробуйте для начала отключить все бумаги и особенно опционы, которыми не пользуетесь.
 
Цитата
Руслан написал:
отличие серверной машины или же операционки Windows Server 2019 от стационарного компа или Windows 10
На сервере, как правило, RAID и размер кластера в разы больше, чем 4к на домашнем компе, может файла подкачки не хватает, а не памяти? Тогда увеличить своп-файл кратно размеру кластера. По умолчанию у него лимит 1.5 размера ОЗУ, надо поставить сильно больше.
 
Спасибо nikolz и Anton за оперативную реакцию.
Цитата
Н-да, к сожалению телепатией не обладаю.
Если хотите помощи, то выкладывайте для начала что и сколько занимает, как загружен процессор, сколько у вас свободной памяти, когда квик не работает.
Действительно мало информации передал, постараюсь восполнить, если нужно что-то дополнительно, скажите.
Конфигурация сервера такая:
Windows Server 2019 Standard
Intel® Xeon® CPU E5-2658A v3 // 2 x 2.2ГГц // Сокетов: 1 // Виртуальные процессоры: 2
4Гб RAM, 40Гб SSD,
1IP.
Что касается вопроса о том, что и сколько занимает, если я правильно его понял, вот списки процессов из powershell
1) Без запущенного квика  - processes
2) С запущенным квиком, здесь как раз видно, что процесс квика занимает больше 500 Мб  - processes1
3) С запущенным квиком и запущенным скриптом, когда он успел отожрать уже около 300 Мб - processes2
К сожалению, не нашел способа прикреплять файлы к сообщению, поэтому скинул их в файлообменник Списки процессов.

По вопросу поведения процессора и памяти, когда квик не работает, не знаю, насколько полная информация и за какой промежуток времени нужна, поэтому сделал скрины из диспетчера задач:
[img]file:///C:/Users/%D0%94%D0%BE%D0%BC/Desktop/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20(3)/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2[/img]
[img]file:///C:/Users/%D0%94%D0%BE%D0%BC/Desktop/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20(3)/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA3[/img]

А это процессор во время запуска квика и авторизации:
[img]file:///C:/Users/%D0%94%D0%BE%D0%BC/Desktop/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20(3)/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA5[/img]

Здесь нормальное поведение скрипта во время работы на домашнем компе, где тоже стоит квик версии 9.2.3.15 (максимум память доходит примерно до 20 Мб и всегда сбрасывается до около 200 Кб, колеблясь в этом диапазоне).
[img]file:///C:/Users/%D0%94%D0%BE%D0%BC/Desktop/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA1[/img]
А вот результат работы на сервере за несколько минут до его падения.
[img]file:///C:/Users/%D0%94%D0%BE%D0%BC/Desktop/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA[/img]
Цитата
Как вы запускаете сборку мусора. Как и что освобождаете из ненужного.
Сборку мусора вручную не запускаю, коннектор взят здесь https://github.com/finsight/QUIKSharp, раньше даже не задавался этим вопросом, поскольку проблем не возникало, просто примерно подозреваю, что дело в этом, но, может быть, это не так.

Цитата
Попробуйте для начала отключить все бумаги и особенно опционы, которыми не пользуетесь.
Опционами не пользуюсь, доска опционов давно удалена. В терминале всего несколько таблиц для контроля за счетом и позициями, а также 4 вкладки по одной на инструмент, в каждой по графику и стакану. По поводу отключения всех бумаг уточните, пожалуйста. Имеется в виду удаление всех вкладок с инструментами?

Цитата
На сервере, как правило, RAID и размер кластера в разы больше, чем 4к на домашнем компе, может файла подкачки не хватает, а не памяти? Тогда увеличить своп-файл кратно размеру кластера. По умолчанию у него лимит 1.5 размера ОЗУ, надо поставить сильно больше.
Было установлено динамическое управление файлом подкачки и объем стоял около 1150 Мб, я отключил и установил диапазон от 4 до 6 Гб. К сожалению, не помогло, проблема повторяется. Файловая система у единственного диска C вроде указана NTFS с размером кластера 4 Кб. Или Вы имели в виду что-то другое и файл подкачки надо еще увеличить?
 
Похоже, я не разобрался с тем, как прикреплять изображения, так что и их скину в файлообменник Изображения
 
Цитата
Руслан написал:
имели в виду что-то другое
Думал железный сервер. А на скрине вижу, что виртуальный. Тогда и "кластер" у него виртуальный и рассуждение неприменимо. По существу проблемы надо автора коннектора подтягивать, как он там задумывал никто кроме него не знает.
 
Цитата
Руслан написал:
Похоже, я не разобрался с тем, как прикреплять изображения, так что и их скину в файлообменник  Изображения
1) Посмотрите в Заказ данных ->поток котировок: инструментов выбрано, параметров выбрано.
2)  Попробуйте следующее:
- посмотреть сколько памяти занимает квик;
-свернуть все окна в терминале квик;
-  посмотреть сколько памяти занимает квик.
 
 какие индикаторы Вы отображаете?
 
Если используете тики, попробуйте их отключить.
 
Спросите у автора скрипта коннектора QUIKSharp о данной проблеме. Возможно Вы не первый.
 
В качестве совета на будущее.
Выкиньте коннектор QUIKSharp .
В вашем распоряжении есть DDE и API C для LUA , mapping (https://habr.com/ru/post/320446/).
Это самые быстрые способы передачи данных в сторонние программы роботов.
 
возможно, что у Вас падает не из-за памяти, а из-за зависания в расчетах робота.
 
Прошу прощения за долгое отсутствие, на работе почти все заболели, в результате случился аврал.

Цитата
nikolz написал:
1) Посмотрите в Заказ данных ->поток котировок: инструментов выбрано, параметров выбран
Действительно было почему-то разное количество на домашнем компе и на сервере, хотя я импортировал настройки с домашнего. Но приведение в соответствие ничего не дало.

Цитата
nikolz написал:
2)  Попробуйте следующее:- посмотреть сколько памяти занимает квик;-свернуть все окна в терминале квик;-  посмотреть сколько памяти занимает квик.
Сделал, но квик занимает одинаковое количество памяти как при свернутых окнах, так и при развернутых.

Цитата
nikolz написал:
какие индикаторы Вы отображаете?
Из индикаторов использую rsi и macdh, они присутствуют на каждом графике. Робот берет информацию с них по тегам при получении новой свечи.

Цитата
nikolz написал:
Если используете тики, попробуйте их отключить.
Нет, тики не используются.

Цитата
nikolz написал:
Спросите у автора скрипта коннектора QUIKSharp о данной проблеме. Возможно Вы не первый.
Спрашивал, но, к сожалению, на форуме молчат. Видимо, идей нет по этому поводу.

Цитата
nikolz написал:
В качестве совета на будущее.
Выкиньте коннектор QUIKSharp .
В вашем распоряжении есть DDE и API C для LUA , mapping ( https://habr.com/ru/post/320446/ ).
Это самые быстрые способы передачи данных в сторонние программы роботов.
К сожалению, пока мое знание языка достаточно поверхностно, поэтому даже на таком уровне возможность сделать робота и связать его с терминалом была подарком. Язык изучать продолжаю, поэтому на будущее прислушаюсь к Вашему совету, как только пойму достаточно ясно что это и с чем едят :lol:

Цитата
nikolz написал:
возможно, что у Вас падает не из-за памяти, а из-за зависания в расчетах робота.
Да, робота, безусловно, есть куда развивать: и лишнего нагорожено, и в коде бардак. Благодаря этой проблеме начал изучать утечки памяти. Тем не менее, робот справлялся со своей задачей, и до перехода на сервер сбоев не было.

У проблемы есть обновление, недавно запустил все на домашнем компе, и ситуация повторилась и здесь. Память скрипта начала разрастаться. В итоге вернулся на версию квика 8.13.3.1 и вот уже несколько дней никаких проблем нет. Выходит, то ли обновление с багом, то ли с ним все в порядке, но новая версия уже не будет работать со скриптом и он нуждается в доработке. Странно, что первое время 9.2.3.15 нормально работала дома. На сервере так же установил 8.13.3.1, все заработало, как полагается. Единственная разница в том, что квик все же занимает около 470 Мб оперативки против 250 дома, но это не критично, после установки настройки "Только данные, отражающие текущее состояние" в разделе "Сохранять для получаемых инструментов и параметров" память на этом уровне и держится все время.
Придется разбираться с DDE и API C для LUA, пока минимальная поддерживаемая версия квика у брокера не изменилась.
Большое спасибо за помощь!
 
Пользуясь случаем, что тема открыта, хочу задать еще один вопрос.

Недавно заметил, что после вечернего клиринга биржа начинает работать в разное время. То есть прямо позавчера в четверг стакан "ожил" только ровно в 19:05, а вчера уже в 19:00 все работало. Есть какая-то закономерность или расписание происходящего?

На сайте ммвб кроме этой картинки с информацией о том, что вечерняя сессия начинается в 19:00, ничего не нашел.

 
 
Цитата
Руслан написал:
Есть какая-то закономерность или расписание происходящего?
Есть. Это дни экспирации.
 
Цитата
Руслан написал:
Пользуясь случаем, что тема открыта, хочу задать еще один вопрос.

Недавно заметил, что после вечернего клиринга биржа начинает работать в разное время. То есть прямо позавчера в четверг стакан "ожил" только ровно в 19:05, а вчера уже в 19:00 все работало. Есть какая-то закономерность или расписание происходящего?

На сайте ммвб кроме этой картинки с информацией о том, что вечерняя сессия начинается в 19:00, ничего не нашел.
Обычно, если есть экспирация фьючерсов, то вечерняя сессия начинается в 19-05,  иначе в 19-00.
 
Цитата
Руслан написал:
Прошу прощения за долгое отсутствие, на работе почти все заболели, в результате случился аврал.
Непонятно , зачем Вы квик посадили на выделенный сервер, если торгуете по двум индикаторам  и по свечам.
----------------------
И уж совсем непонятно зачем Вы ставите эту монстр-связку с шарпом.
Написали бы на луа и не мучались бы так.
------------------------------------
Если же переносите на выделенный сервер, то тогда и квик надо выкидывать.
В этом смысле неплохая поделка у финам "Высокоскоростной Transaq"  но делал на ней давно, когда была все сыро.
Возможно сейчас все лучше. Но в любом случае это лучше чем делать на квике для робота в дата центре.
Да и памяти надо в этом случае в разы меньше и работать будет на порядок быстрее.
--------------------------
Но если Вы начинающий в написании роботов, то выделенный сервер вам тем более не нужен.
 
Anton, nikolz, спасибо, по поводу экспирации учту.

Цитата
nikolz написал:
Непонятно , зачем Вы квик посадили на выделенный сервер, если торгуете по двум индикаторам  и по свечам.
Здесь причина простая, пару раз отключили электричество, были перебои с интернетом, соответственно, робот пропускает вход/выход, не совершает сделку, и вся стратегия становится бессмысленной, поскольку статистическое преимущество уступает место случайности.

Цитата
nikolz написал:
И уж совсем непонятно зачем Вы ставите эту монстр-связку с шарпом.Написали бы на луа и не мучались бы так.
А тут скорее пошел по пути наименьшего сопротивления: написать на шарпе и соединить с квиком было проще, чем учить луа с нуля.
Но временное решение себя исчерпывает.
Цитата
nikolz написал:
Высокоскоростной Transaq
За наводку спасибо, надо глянуть что у них там.
Страницы: 1
Читают тему
Наверх