Использую коннектор 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 размера ОЗУ, надо поставить сильно больше.
Н-да, к сожалению телепатией не обладаю. Если хотите помощи, то выкладывайте для начала что и сколько занимает, как загружен процессор, сколько у вас свободной памяти, когда квик не работает.
Действительно мало информации передал, постараюсь восполнить, если нужно что-то дополнительно, скажите. Конфигурация сервера такая: 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 . В вашем распоряжении есть DDE и API C для LUA , mapping (https://habr.com/ru/post/320446/). Это самые быстрые способы передачи данных в сторонние программы роботов.
Прошу прощения за долгое отсутствие, на работе почти все заболели, в результате случился аврал.
Цитата
nikolz написал: 1) Посмотрите в Заказ данных ->поток котировок: инструментов выбрано, параметров выбран
Действительно было почему-то разное количество на домашнем компе и на сервере, хотя я импортировал настройки с домашнего. Но приведение в соответствие ничего не дало.
Цитата
nikolz написал: 2) Попробуйте следующее:- посмотреть сколько памяти занимает квик;-свернуть все окна в терминале квик;- посмотреть сколько памяти занимает квик.
Сделал, но квик занимает одинаковое количество памяти как при свернутых окнах, так и при развернутых.
Из индикаторов использую rsi и macdh, они присутствуют на каждом графике. Робот берет информацию с них по тегам при получении новой свечи.
Цитата
nikolz написал: Если используете тики, попробуйте их отключить.
Нет, тики не используются.
Цитата
nikolz написал: Спросите у автора скрипта коннектора QUIKSharp о данной проблеме. Возможно Вы не первый.
Спрашивал, но, к сожалению, на форуме молчат. Видимо, идей нет по этому поводу.
Цитата
nikolz написал: В качестве совета на будущее. Выкиньте коннектор QUIKSharp . В вашем распоряжении есть DDE и API C для LUA , mapping ( https://habr.com/ru/post/320446/ ). Это самые быстрые способы передачи данных в сторонние программы роботов.
К сожалению, пока мое знание языка достаточно поверхностно, поэтому даже на таком уровне возможность сделать робота и связать его с терминалом была подарком. Язык изучать продолжаю, поэтому на будущее прислушаюсь к Вашему совету, как только пойму достаточно ясно что это и с чем едят
Цитата
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 написал: И уж совсем непонятно зачем Вы ставите эту монстр-связку с шарпом.Написали бы на луа и не мучались бы так.
А тут скорее пошел по пути наименьшего сопротивления: написать на шарпе и соединить с квиком было проще, чем учить луа с нуля. Но временное решение себя исчерпывает.