Race condition в Trans2Quik.dll?

Страницы: 1
RSS
Race condition в Trans2Quik.dll?
 
Уже несколько раз сталкиваюсь с зависанием моего торгового бота на реальном сервере, которое с большой долей вероятности вызвано проблемами в Trans2Quik.dll

Зависание происходит в интервале от нескольких часов до нескольких суток, не зависит от активности на бирже и происходит при практически одновременной асинхронной подаче двух разных заявок по изменению их цены (перестановка заявок).

То, что проблема именно с Trans2Quik.dll подтверждается следующим:
- возврат из функции TRANS2QUIK_SEND_ASYNC_TRANSACTION происходит со статусом 0 (TRANS2QUIK_SUCCESS) в обоих случаях, т.е. без ошибок (бот успевает записать заявки в лог после возврата из функции)
- обе заявки остаются активными в терминале Quik и их потом приходится снимать вручную – запрос до биржи не доходит ни по одной из заявок
- в самом Quik также ничего не происходит

Если нужна более детальная информация (что отправляется на сервер), могу предоставить ее в личку

Прошу разобраться в этой проблеме
 
Если колбек может вызываться из разных потоков, то, возможно, это у меня возникает race condition

Поглядим...
 
А дебагером если посмотреть - где висим?
 
Цитата
deisik написал:
Уже несколько раз сталкиваюсь с зависанием моего торгового бота на реальном сервере, которое с большой долей вероятности вызвано проблемами в Trans2Quik.dll

Зависание происходит в интервале от нескольких часов до нескольких суток, не зависит от активности на бирже и происходит при практически одновременной асинхронной подаче двух разных заявок по изменению их цены (перестановка заявок).

То, что проблема именно с Trans2Quik.dll подтверждается следующим:
- возврат из функции TRANS2QUIK_SEND_ASYNC_TRANSACTION происходит со статусом 0 (TRANS2QUIK_SUCCESS) в обоих случаях, т.е. без ошибок (бот успевает записать заявки в лог после возврата из функции)
- обе заявки остаются активными в терминале Quik и их потом приходится снимать вручную – запрос до биржи не доходит ни по одной из заявок
- в самом Quik также ничего не происходит

Если нужна более детальная информация (что отправляется на сервер), могу предоставить ее в личку

Прошу разобраться в этой проблеме
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
 
Цитата
Михаил Филимонов написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота

Сколько у вас транзакций в день по одному инструменту?
 
Цитата
deisik написал:
Цитата
Михаил Филимонов написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота

Сколько у вас транзакций в день по одному инструменту?
5000 - 6000
 
Я тоже отсылаю асинхронные ордера.
Но у меня немного другая проблема.
Бывает ордер отсылается, а в pfTransReplyCB ничего не приходит и в Квик заявка не появляется.
думается, что при большом потоке ордеров очередь в библиотеке переполняется (если она вообще есть)
 
Цитата
Михаил Филимонов написал:
Цитата
deisik написал:
 
Цитата
Михаил Филимонов  написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
 
Сколько у вас транзакций в день по одному инструменту?
5000 - 6000
250-300 тысяч
 
Информация к размышлению.
Тестил  скрипт на QLUA на демо сервере разработчиков.
За 4 часа 250 тысяч заявок выставил и снял.
Инструментов было 250.
Потоки открывались из пула столько, сколько надо. чтобы не было очереди по инструменту.
Максимальное число потоков получилось 12.
----------------
Проблем было ноль.
 
Цитата
deisik написал:
Цитата
Михаил Филимонов написал:
 
Цитата
deisik  написал:
 
Цитата
 Михаил Филимонов   написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
 
Сколько у вас транзакций в день по одному инструменту?
 5000 - 6000
250-300 тысяч
Количество заявок в день ни о чем не говорит.
Может влиять количество заявок в секунду, например.
 
Не влияет.
так как ответы от сервера приходят пакетами, то отсылал заявки с максимально возможной скоростью,  примерно со скоростью до 100 в секунду. В результате   почти положил сервер , так как отключили и предупредили, чтобы так не делал.
 
Цитата
Михаил Филимонов написал:
Цитата
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
А сколько у Вас ядер на компе, если открываете 138 потоков?
Интересно, как долго потоки простаивают в ожидании доступа к ядру?
 
Цитата
nikolz написал:
Цитата
Михаил Филимонов написал:
 
Цитата
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
А сколько у Вас ядер на компе, если открываете 138 потоков?
Интересно, как долго потоки простаивают в ожидании доступа к ядру?
Ядер - 12
Не замечал простоя
Страницы: 1
Читают тему
Наверх