У нас есть простое приложение QuickFix, которое переводит исправления сообщений в наш собственный внутренний формат и наоборот.
состоит из двух потоков, одним из которых является Fix :: Application и Fix :: MessageCracker , а другая потока обрабатывает вход со стороны внутренней сети. как QuickFix использует для MySQLSTORE. Если DB находится под слишком большим стрессом, я ожидаю, что каждое отдельное исполнение будет постепенно дольше, но все равно должно закончить. Код или сигнал. Приложение Fix пытается сейф всех сообщений в своем магазине DB. Когда внутренний процесс выполняется, он отправляет обновление обратно в этот процесс, который переводит его обратно в сообщение о ответе Fix. Я не могу себе представить, что мы первыми попробовали это, но я не мог найти ничего, связанного с Googeling. < /P>
Вот типичный след стека. Как вы можете увидеть приложение Fix, пытается вставить новое сообщение в БД. Другие темы ничего не делают. Я отредактировал некоторые конфиденциальные данные из него. < /P>
(gdb) info threads
Id Target Id Frame
8 Thread 0x7f9689a8e700 (LWP 27627) "tgfix" 0x00007f968b7e09a3 in select () from /lib64/libc.so.6
7 Thread 0x7f968928d700 (LWP 27630) "tgfix" 0x00007f968b7b085d in nanosleep () from /lib64/libc.so.6
6 Thread 0x7f9688879700 (LWP 27664) "tgfix" 0x00007f968b7e09a3 in select () from /lib64/libc.so.6
5 Thread 0x7f967bfff700 (LWP 27665) "tgfix" 0x00007f968d0da75d in read () from /lib64/libpthread.so.0
4 Thread 0x7f967a5f5700 (LWP 10882) "tgfix" 0x00007f968b7b085d in nanosleep () from /lib64/libc.so.6
3 Thread 0x7f967b7fe700 (LWP 10883) "tgfix" 0x00007f968b7b085d in nanosleep () from /lib64/libc.so.6
2 Thread 0x7f967affd700 (LWP 10884) "tgfix" 0x00007f968d0d9b3b in do_futex_wait.constprop.1 () from /lib64/libpthread.so.0
* 1 Thread 0x7f968e82f880 (LWP 27626) "tgfix" 0x00007f968d0d9b3b in do_futex_wait.constprop.1 () from /lib64/libpthread.so.0
(gdb) t 5
[Switching to thread 5 (Thread 0x7f967bfff700 (LWP 27665))]
#0 0x00007f968d0da75d in read () from /lib64/libpthread.so.0
(gdb) bt
#0 0x00007f968d0da75d in read () from /lib64/libpthread.so.0
#1 0x00007f968e176d20 in vio_read () from /usr/lib64/mysql/libmysqlclient.so.18
#2 0x00007f968e176da1 in vio_read_buff () from /usr/lib64/mysql/libmysqlclient.so.18
#3 0x00007f968e15af3a in my_real_read(st_net*, unsigned long*) () from /usr/lib64/mysql/libmysqlclient.so.18
#4 0x00007f968e15bdac in my_net_read () from /usr/lib64/mysql/libmysqlclient.so.18
#5 0x00007f968e14e84c in cli_safe_read () from /usr/lib64/mysql/libmysqlclient.so.18
#6 0x00007f968e14fe1b in cli_read_query_result () from /usr/lib64/mysql/libmysqlclient.so.18
#7 0x00007f968e151056 in mysql_real_query () from /usr/lib64/mysql/libmysqlclient.so.18
#8 0x00000000004267d6 in MySql::Database::execute (this=this@entry=0x7fffd9eaacf8,
sql="insert into tg_messages_in (beginstring,sendercompid,targetcompid,session_qualifier,msgseqnum,clordid,message) values ('FIX.4.2', '', 'CUSTOMER', '', 1917, 'fix_1757507653635360943_1916', '8="...) at mysql.cpp:155
#9 0x000000000041f8f3 in FixApplication::persistLocally (this=this@entry=0x7fffd9eaace0, message=..., sessionid=...) at fixapplication.cpp:96
#10 0x00000000004209dc in FixApplication::fromApp (this=0x7fffd9eaace0, message=..., sessionid=...) at fixapplication.cpp:57
#11 0x000000000046659f in FIX::Session::verify (this=this@entry=0x1b49d10, msg=..., checkTooHigh=checkTooHigh@entry=true, checkTooLow=checkTooLow@entry=true) at Session.cpp:1159
#12 0x000000000046eaab in FIX::Session::next (this=this@entry=0x1b49d10, message=..., timeStamp=..., queued=queued@entry=false) at Session.cpp:1421
#13 0x000000000046fe8c in FIX::Session::next (this=0x1b49d10,
msg="8=FIX.4.2\001\071=187\001\063\065=D\001\063\064=1917\001\064\071=CUSTOMER\001\065\062=20250910-12:34:13.635\001\065\066=\001\061\061=fix_1757507653635360943_1916\001\061\070=G\001\062\061=1\001\063\070=1\001\064\060=D\001\064\064=999\001\064\070=DE0005439004\001\065\064=1\001\065\065=idontknow\001\066\060=20250910-12:34:13\001\061\060\060=TGO"..., timeStamp=..., queued=queued@entry=false)
at Session.cpp:1339
#14 0x0000000000480bd2 in FIX::SocketConnection::readMessages (this=this@entry=0x7f9674000be0, s=...) at SocketConnection.cpp:224
#15 0x0000000000480dbc in FIX::SocketConnection::read (this=0x7f9674000be0, a=..., s=...) at SocketConnection.cpp:170
#16 0x000000000047d2f1 in FIX::SocketAcceptor::onData (this=0x7fffd9eaafc0, server=..., s=6) at SocketAcceptor.cpp:196
#17 0x00000000004e41d0 in FIX::ServerWrapper::onEvent (this=0x7f967bffed20, monitor=..., socket=6) at SocketServer.cpp:60
#18 0x000000000047f4dc in FIX::SocketMonitor::processReadSet (this=this@entry=0x1baebf0, strategy=..., readSet=...) at SocketMonitor.cpp:260
#19 0x000000000047fa57 in FIX::SocketMonitor::block (this=this@entry=0x1baebf0, strategy=..., poll=poll@entry=false, timeout=timeout@entry=0) at SocketMonitor.cpp:219
#20 0x00000000004e3375 in FIX::SocketServer::block (this=0x1baeb90, strategy=..., poll=poll@entry=false, timeout=timeout@entry=0) at SocketServer.cpp:160
#21 0x000000000047e657 in FIX::SocketAcceptor::onStart (this=0x7fffd9eaafc0) at SocketAcceptor.cpp:113
#22 0x00000000004782fa in FIX::Acceptor::startThread (p=) at Acceptor.cpp:245
#23 0x00007f968d0d3ea5 in start_thread () from /lib64/libpthread.so.0
#24 0x00007f968b7e98dd in clone () from /lib64/libc.so.6
< /code>
ps: я знаю, что это, вероятно, ошибка в моем коде. Я не предполагаю, что нашел ошибку в libmysql
или libquickfix . Тем не менее, мне было интересно, может ли могущественная сила Интернета сократить мои усилия, чтобы найти ошибку. Комментарии уже дали мне несколько новых идей, где искать. Особенно @Jesper Juhl < /p>
pps: мы используем Libmysql для доступа к серверу MariaDB. Если это не правильная комбинация, я был бы рад получить другой вариант.
У нас есть простое приложение QuickFix, которое переводит исправления сообщений в наш собственный внутренний формат и наоборот. состоит из двух потоков, одним из которых является Fix :: Application и Fix :: MessageCracker , а другая потока обрабатывает вход со стороны внутренней сети. как QuickFix использует для MySQLSTORE. Если DB находится под слишком большим стрессом, я ожидаю, что каждое отдельное исполнение будет постепенно дольше, но все равно должно закончить. Код или сигнал. Приложение Fix пытается сейф всех сообщений в своем магазине DB. Когда внутренний процесс выполняется, он отправляет обновление обратно в этот процесс, который переводит его обратно в сообщение о ответе Fix. Я не могу себе представить, что мы первыми попробовали это, но я не мог найти ничего, связанного с Googeling. < /P> Вот типичный след стека. Как вы можете увидеть приложение Fix, пытается вставить новое сообщение в БД. Другие темы ничего не делают. Я отредактировал некоторые конфиденциальные данные из него. < /P> [code](gdb) info threads Id Target Id Frame 8 Thread 0x7f9689a8e700 (LWP 27627) "tgfix" 0x00007f968b7e09a3 in select () from /lib64/libc.so.6 7 Thread 0x7f968928d700 (LWP 27630) "tgfix" 0x00007f968b7b085d in nanosleep () from /lib64/libc.so.6 6 Thread 0x7f9688879700 (LWP 27664) "tgfix" 0x00007f968b7e09a3 in select () from /lib64/libc.so.6 5 Thread 0x7f967bfff700 (LWP 27665) "tgfix" 0x00007f968d0da75d in read () from /lib64/libpthread.so.0 4 Thread 0x7f967a5f5700 (LWP 10882) "tgfix" 0x00007f968b7b085d in nanosleep () from /lib64/libc.so.6 3 Thread 0x7f967b7fe700 (LWP 10883) "tgfix" 0x00007f968b7b085d in nanosleep () from /lib64/libc.so.6 2 Thread 0x7f967affd700 (LWP 10884) "tgfix" 0x00007f968d0d9b3b in do_futex_wait.constprop.1 () from /lib64/libpthread.so.0 * 1 Thread 0x7f968e82f880 (LWP 27626) "tgfix" 0x00007f968d0d9b3b in do_futex_wait.constprop.1 () from /lib64/libpthread.so.0 (gdb) t 5 [Switching to thread 5 (Thread 0x7f967bfff700 (LWP 27665))] #0 0x00007f968d0da75d in read () from /lib64/libpthread.so.0 (gdb) bt #0 0x00007f968d0da75d in read () from /lib64/libpthread.so.0 #1 0x00007f968e176d20 in vio_read () from /usr/lib64/mysql/libmysqlclient.so.18 #2 0x00007f968e176da1 in vio_read_buff () from /usr/lib64/mysql/libmysqlclient.so.18 #3 0x00007f968e15af3a in my_real_read(st_net*, unsigned long*) () from /usr/lib64/mysql/libmysqlclient.so.18 #4 0x00007f968e15bdac in my_net_read () from /usr/lib64/mysql/libmysqlclient.so.18 #5 0x00007f968e14e84c in cli_safe_read () from /usr/lib64/mysql/libmysqlclient.so.18 #6 0x00007f968e14fe1b in cli_read_query_result () from /usr/lib64/mysql/libmysqlclient.so.18 #7 0x00007f968e151056 in mysql_real_query () from /usr/lib64/mysql/libmysqlclient.so.18 #8 0x00000000004267d6 in MySql::Database::execute (this=this@entry=0x7fffd9eaacf8, sql="insert into tg_messages_in (beginstring,sendercompid,targetcompid,session_qualifier,msgseqnum,clordid,message) values ('FIX.4.2', '', 'CUSTOMER', '', 1917, 'fix_1757507653635360943_1916', '8="...) at mysql.cpp:155 #9 0x000000000041f8f3 in FixApplication::persistLocally (this=this@entry=0x7fffd9eaace0, message=..., sessionid=...) at fixapplication.cpp:96 #10 0x00000000004209dc in FixApplication::fromApp (this=0x7fffd9eaace0, message=..., sessionid=...) at fixapplication.cpp:57 #11 0x000000000046659f in FIX::Session::verify (this=this@entry=0x1b49d10, msg=..., checkTooHigh=checkTooHigh@entry=true, checkTooLow=checkTooLow@entry=true) at Session.cpp:1159 #12 0x000000000046eaab in FIX::Session::next (this=this@entry=0x1b49d10, message=..., timeStamp=..., queued=queued@entry=false) at Session.cpp:1421 #13 0x000000000046fe8c in FIX::Session::next (this=0x1b49d10, msg="8=FIX.4.2\001\071=187\001\063\065=D\001\063\064=1917\001\064\071=CUSTOMER\001\065\062=20250910-12:34:13.635\001\065\066=\001\061\061=fix_1757507653635360943_1916\001\061\070=G\001\062\061=1\001\063\070=1\001\064\060=D\001\064\064=999\001\064\070=DE0005439004\001\065\064=1\001\065\065=idontknow\001\066\060=20250910-12:34:13\001\061\060\060=TGO"..., timeStamp=..., queued=queued@entry=false) at Session.cpp:1339 #14 0x0000000000480bd2 in FIX::SocketConnection::readMessages (this=this@entry=0x7f9674000be0, s=...) at SocketConnection.cpp:224 #15 0x0000000000480dbc in FIX::SocketConnection::read (this=0x7f9674000be0, a=..., s=...) at SocketConnection.cpp:170 #16 0x000000000047d2f1 in FIX::SocketAcceptor::onData (this=0x7fffd9eaafc0, server=..., s=6) at SocketAcceptor.cpp:196 #17 0x00000000004e41d0 in FIX::ServerWrapper::onEvent (this=0x7f967bffed20, monitor=..., socket=6) at SocketServer.cpp:60 #18 0x000000000047f4dc in FIX::SocketMonitor::processReadSet (this=this@entry=0x1baebf0, strategy=..., readSet=...) at SocketMonitor.cpp:260 #19 0x000000000047fa57 in FIX::SocketMonitor::block (this=this@entry=0x1baebf0, strategy=..., poll=poll@entry=false, timeout=timeout@entry=0) at SocketMonitor.cpp:219 #20 0x00000000004e3375 in FIX::SocketServer::block (this=0x1baeb90, strategy=..., poll=poll@entry=false, timeout=timeout@entry=0) at SocketServer.cpp:160 #21 0x000000000047e657 in FIX::SocketAcceptor::onStart (this=0x7fffd9eaafc0) at SocketAcceptor.cpp:113 #22 0x00000000004782fa in FIX::Acceptor::startThread (p=) at Acceptor.cpp:245 #23 0x00007f968d0d3ea5 in start_thread () from /lib64/libpthread.so.0 #24 0x00007f968b7e98dd in clone () from /lib64/libc.so.6
< /code> ps: я знаю, что это, вероятно, ошибка в моем коде. Я не предполагаю, что нашел ошибку в libmysql [/code] или libquickfix . Тем не менее, мне было интересно, может ли могущественная сила Интернета сократить мои усилия, чтобы найти ошибку. Комментарии уже дали мне несколько новых идей, где искать. Особенно @Jesper Juhl < /p> pps: мы используем Libmysql для доступа к серверу MariaDB. Если это не правильная комбинация, я был бы рад получить другой вариант.