Dimension Опубліковано: 17 жовтня, 2008 Автор Опубліковано: 17 жовтня, 2008 а откуда ты береш время падения?Из скрипта? Скрипт по крону грузится? ну да, он же и влог отдельный пишет.... З.Ы. еще одно падение произошло, что скрипт не смог поднять...
Dimension Опубліковано: 17 жовтня, 2008 Автор Опубліковано: 17 жовтня, 2008 madf, обьясни пожалуйста поподробней что нужно сделать, что бы помочь тебе в выявлении глюка. Какое логирование и как включить, что зачем делать и т.п....
Kucher2 Опубліковано: 17 жовтня, 2008 Опубліковано: 17 жовтня, 2008 З.Ы. еще одно падение произошло, что скрипт не смог поднять... Попробуй это. У меня недавно было падение, всё как надо сработало. Только читай внимательно что я там написал внизу.
Dimension Опубліковано: 17 жовтня, 2008 Автор Опубліковано: 17 жовтня, 2008 А я вижу закономерность Падает когда наступает новая минута. Отдуплился, что он узнает что стг упал и подымает его на 1й минуте... Это все скрипт... А вот когда он падает.... ?
Slava Опубліковано: 17 жовтня, 2008 Опубліковано: 17 жовтня, 2008 если кому интересно скрипт перезапуска работает пока как часы #!/bin/bash dat=`date` set `ps ax | grep stargazer` if [ $3 = "S" ]; then killall -9 stg-exec stargazer /sbin/stargazer f="stargazer was stopped. Now is runnning" echo $dat $f >> /var/log/stg.restart else f="stg status: running" fi я поставил проверку по крону раз в минуту вот количество падений в день от 2-х до 5-ти лог перезапусков Fri Oct 10 22:07:01 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 10 23:07:01 EEST 2008 stargazer was stopped. Now is runnning Sat Oct 11 01:22:01 EEST 2008 stargazer was stopped. Now is runnning Sat Oct 11 05:06:01 EEST 2008 stargazer was stopped. Now is runnning Sat Oct 11 09:07:01 EEST 2008 stargazer was stopped. Now is runnning Sat Oct 11 12:23:01 EEST 2008 stargazer was stopped. Now is runnning Sat Oct 11 19:07:01 EEST 2008 stargazer was stopped. Now is runnning Sun Oct 12 18:28:01 EEST 2008 stargazer was stopped. Now is runnning Sun Oct 12 18:41:01 EEST 2008 stargazer was stopped. Now is runnning Sun Oct 12 19:02:01 EEST 2008 stargazer was stopped. Now is runnning Sun Oct 12 19:06:01 EEST 2008 stargazer was stopped. Now is runnning Mon Oct 13 14:07:01 EEST 2008 stargazer was stopped. Now is runnning Mon Oct 13 19:10:01 EEST 2008 stargazer was stopped. Now is runnning Mon Oct 13 20:07:01 EEST 2008 stargazer was stopped. Now is runnning Mon Oct 13 23:51:01 EEST 2008 stargazer was stopped. Now is runnning Tue Oct 14 18:02:01 EEST 2008 stargazer was stopped. Now is runnning Wed Oct 15 04:07:01 EEST 2008 stargazer was stopped. Now is runnning Wed Oct 15 07:22:01 EEST 2008 stargazer was stopped. Now is runnning Wed Oct 15 14:28:01 EEST 2008 stargazer was stopped. Now is runnning Wed Oct 15 18:07:01 EEST 2008 stargazer was stopped. Now is runnning Thu Oct 16 07:21:01 EEST 2008 stargazer was stopped. Now is runnning Thu Oct 16 10:08:01 EEST 2008 stargazer was stopped. Now is runnning Thu Oct 16 18:07:02 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 17 03:06:01 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 17 08:07:01 EEST 2008 stargazer was stopped. Now is runnning
madf Опубліковано: 17 жовтня, 2008 Опубліковано: 17 жовтня, 2008 madf, обьясни пожалуйста поподробней что нужно сделать, что бы помочь тебе в выявлении глюка. Какое логирование и как включить, что зачем делать и т.п.... Для начала скажи, какие модули используеш и какие патчи накладывал (если накладывал, конечно).
Keen Опубліковано: 18 жовтня, 2008 Опубліковано: 18 жовтня, 2008 Опять падение. Немного длинным сообщение получится: localhost ~ # cat varling ==29990== Memcheck, a memory error detector. ==29990== Copyright © 2002-2007, and GNU GPL'd, by Julian Seward et al. ==29990== Using LibVEX rev 1854, a library for dynamic binary translation. ==29990== Copyright © 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==29990== Using valgrind-3.3.1, a dynamic binary instrumentation framework. ==29990== Copyright © 2000-2007, and GNU GPL'd, by Julian Seward et al. ==29990== For more details, rerun with: -v ==29990== ==29990== My PID = 29990, parent PID = 29986. Prog and args are: ==29990== stargazer ==29990== /etc/stargazer ==29990== ==29990== Thread 3: ==29990== Source and destination overlap in mempcpy(0x67FBF6E, 0x67FBF6E, 50) ==29990== at 0x40241E1: mempcpy (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==29990== by 0x41FE99F: _IO_default_xsputn (in /lib/libc-2.7.so) ==29990== by 0x41D95F8: vfprintf (in /lib/libc-2.7.so) ==29990== by 0x41F4151: vsprintf (in /lib/libc-2.7.so) ==29990== by 0x41DEFF5: sprintf (in /lib/libc-2.7.so) ==29990== by 0x4EE1C64: FILES_STORE::WriteDetailedStat(std::map<IP_DIR_PAIR, STAT_NODE, std::less<IP_DIR_PAIR>, std::allocator<std::pair<IP_DIR_PAIR const, STAT_NODE> > > const*, long, std::string const&) const (file_store.cpp:1751) ==29990== by 0x80AA2D0: USER::WriteDetailStat() (user.cpp:1171) ==29990== by 0x80CC635: USERS::NewMinute(tm const*) (users.cpp:402) ==29990== by 0x80CCDA2: USERS::Run(void*) (users.cpp:334) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== by 0x425AD1D: clone (in /lib/libc-2.7.so) ==29990== ==29990== Thread 11: ==29990== Conditional jump or move depends on uninitialised value(s) ==29990== at 0x41144D9: std::string::string(char const*, std::allocator<char> const&) (in /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/libstdc++.so.6.0.9) ==29990== by 0x4FA7067: CONFIGPROTO::RecvData(int) (rsconf.cpp:500) ==29990== by 0x4FA7802: CONFIGPROTO::Run(void*) (rsconf.cpp:255) ==29990== by 0x4FA2DFD: STG_CONFIG::Run(void*) (stgconfig.cpp:234) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== by 0x425AD1D: clone (in /lib/libc-2.7.so) ==29990== ==29990== Conditional jump or move depends on uninitialised value(s) ==29990== at 0x41D6BCA: vfprintf (in /lib/libc-2.7.so) ==29990== by 0x41F9ADE: vsnprintf (in /lib/libc-2.7.so) ==29990== by 0x4030F31: printfd(char const*, char const*, ...) (common.cpp:90) ==29990== by 0x4FACA2F: PARSER_GET_USER::ParseStart(void*, char const*, char const**) (parser.cpp:121) ==29990== by 0x4FAA532: ParseXMLStart(void*, char const*, char const**) (configproto.cpp:59) ==29990== by 0x405227B: (within /usr/lib/libexpat.so.1.5.2) ==29990== by 0x405309C: (within /usr/lib/libexpat.so.1.5.2) ==29990== by 0x404C68A: XML_ParseBuffer (in /usr/lib/libexpat.so.1.5.2) ==29990== by 0x404E79D: XML_Parse (in /usr/lib/libexpat.so.1.5.2) ==29990== by 0x4FA8C8C: CONFIGPROTO::ParseCommand() (configproto.cpp:171) ==29990== by 0x4FA70FE: CONFIGPROTO::RecvData(int) (rsconf.cpp:506) ==29990== by 0x4FA7802: CONFIGPROTO::Run(void*) (rsconf.cpp:255) ==29990== ==29990== Thread 7: ==29990== Use of uninitialised value of size 4 ==29990== at 0x42CB3EC: F(BLOWFISH_CTX*, unsigned) (blowfish.cpp:330) ==29990== by 0x42CB468: Blowfish_Encrypt(BLOWFISH_CTX*, unsigned*, unsigned*) (blowfish.cpp:349) ==29990== by 0x4F75184: AUTH_IA::Encrypt(BLOWFISH_CTX*, char*, char const*, int) (inetaccess.cpp:1233) ==29990== by 0x4F76A61: AUTH_IA::RealSendMessage8(STG_MSG const&, unsigned, IA_USER&) (inetaccess.cpp:1313) ==29990== by 0x4F78CA0: AUTH_IA::Timeouter() (inetaccess.cpp:775) ==29990== by 0x4F79823: AUTH_IA::RunTimeouter(void*) (inetaccess.cpp:546) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== by 0x425AD1D: clone (in /lib/libc-2.7.so) ==29990== ==29990== Use of uninitialised value of size 4 ==29990== at 0x42CB3F7: F(BLOWFISH_CTX*, unsigned) (blowfish.cpp:330) ==29990== by 0x42CB468: Blowfish_Encrypt(BLOWFISH_CTX*, unsigned*, unsigned*) (blowfish.cpp:349) ==29990== by 0x4F75184: AUTH_IA::Encrypt(BLOWFISH_CTX*, char*, char const*, int) (inetaccess.cpp:1233) ==29990== by 0x4F76A61: AUTH_IA::RealSendMessage8(STG_MSG const&, unsigned, IA_USER&) (inetaccess.cpp:1313) ==29990== by 0x4F78CA0: AUTH_IA::Timeouter() (inetaccess.cpp:775) ==29990== by 0x4F79823: AUTH_IA::RunTimeouter(void*) (inetaccess.cpp:546) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== by 0x425AD1D: clone (in /lib/libc-2.7.so) ==29990== ==29990== Use of uninitialised value of size 4 ==29990== at 0x42CB40B: F(BLOWFISH_CTX*, unsigned) (blowfish.cpp:331) ==29990== by 0x42CB468: Blowfish_Encrypt(BLOWFISH_CTX*, unsigned*, unsigned*) (blowfish.cpp:349) ==29990== by 0x4F75184: AUTH_IA::Encrypt(BLOWFISH_CTX*, char*, char const*, int) (inetaccess.cpp:1233) ==29990== by 0x4F76A61: AUTH_IA::RealSendMessage8(STG_MSG const&, unsigned, IA_USER&) (inetaccess.cpp:1313) ==29990== by 0x4F78CA0: AUTH_IA::Timeouter() (inetaccess.cpp:775) ==29990== by 0x4F79823: AUTH_IA::RunTimeouter(void*) (inetaccess.cpp:546) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== by 0x425AD1D: clone (in /lib/libc-2.7.so) ==29990== ==29990== Use of uninitialised value of size 4 ==29990== at 0x42CB41C: F(BLOWFISH_CTX*, unsigned) (blowfish.cpp:332) ==29990== by 0x42CB468: Blowfish_Encrypt(BLOWFISH_CTX*, unsigned*, unsigned*) (blowfish.cpp:349) ==29990== by 0x4F75184: AUTH_IA::Encrypt(BLOWFISH_CTX*, char*, char const*, int) (inetaccess.cpp:1233) ==29990== by 0x4F76A61: AUTH_IA::RealSendMessage8(STG_MSG const&, unsigned, IA_USER&) (inetaccess.cpp:1313) ==29990== by 0x4F78CA0: AUTH_IA::Timeouter() (inetaccess.cpp:775) ==29990== by 0x4F79823: AUTH_IA::RunTimeouter(void*) (inetaccess.cpp:546) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== by 0x425AD1D: clone (in /lib/libc-2.7.so) ==29990== ==29990== Syscall param socketcall.sendto(msg) points to uninitialised byte(s) ==29990== at 0x4000882: (within /lib/ld-2.7.so) ==29990== by 0x4F76A95: AUTH_IA::RealSendMessage8(STG_MSG const&, unsigned, IA_USER&) (inetaccess.cpp:1314) ==29990== by 0x4F78CA0: AUTH_IA::Timeouter() (inetaccess.cpp:775) ==29990== by 0x4F79823: AUTH_IA::RunTimeouter(void*) (inetaccess.cpp:546) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== by 0x425AD1D: clone (in /lib/libc-2.7.so) ==29990== Address 0x90e589c is on thread 7's stack ==29990== ==29990== Thread 6: ==29990== Invalid read of size 4 ==29990== at 0x4070100: pthread_mutex_lock (in /lib/libpthread-2.7.so) ==29990== by 0x80921B6: STG_LOCKER::STG_LOCKER(pthread_mutex_t*, char const*, int) (stg_locker.h:59) ==29990== by 0x80ABCB3: USER::AddTraffStatD(int, unsigned, unsigned short, unsigned) (user.cpp:980) ==29990== by 0x80A4A1B: TRAFFCOUNTER::DelUser(std::_List_iterator<USER>) (traffcounter.cpp:640) ==29990== by 0x8096A9E: TRF_IP_BEFORE::Notify(unsigned const&, unsigned const&) (traffcounter.h:244) ==29990== by 0x80BADB3: USER_PROPERTY<unsigned>::operator=(unsigned const&) (user_property.h:211) ==29990== by 0x80AB984: USER::Unauthorize(BASE_AUTH const*) (user.cpp:574) ==29990== by 0x4F756D3: AUTH_IA::Send_FIN_8(IA_USER*, unsigned, std::_Rb_tree_iterator<std::pair<unsigned const, IA_USER> >) (inetaccess.cpp:1797) ==29990== by 0x4F78909: AUTH_IA::PacketProcessor(char*, int, unsigned, unsigned short, int, std::_List_iterator<USER>*) (inetaccess.cpp:1106) ==29990== by 0x4F79409: AUTH_IA::RecvData(char*, int) (inetaccess.cpp:687) ==29990== by 0x4F79A67: AUTH_IA::Run(void*) (inetaccess.cpp:520) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== Address 0x1f60 is not stack'd, malloc'd or (recently) free'd ==29990== ==29990== Process terminating with default action of signal 11 (SIGSEGV) ==29990== Access not within mapped region at address 0x1F60 ==29990== at 0x4070100: pthread_mutex_lock (in /lib/libpthread-2.7.so) ==29990== by 0x80921B6: STG_LOCKER::STG_LOCKER(pthread_mutex_t*, char const*, int) (stg_locker.h:59) ==29990== by 0x80ABCB3: USER::AddTraffStatD(int, unsigned, unsigned short, unsigned) (user.cpp:980) ==29990== by 0x80A4A1B: TRAFFCOUNTER::DelUser(std::_List_iterator<USER>) (traffcounter.cpp:640) ==29990== by 0x8096A9E: TRF_IP_BEFORE::Notify(unsigned const&, unsigned const&) (traffcounter.h:244) ==29990== by 0x80BADB3: USER_PROPERTY<unsigned>::operator=(unsigned const&) (user_property.h:211) ==29990== by 0x80AB984: USER::Unauthorize(BASE_AUTH const*) (user.cpp:574) ==29990== by 0x4F756D3: AUTH_IA::Send_FIN_8(IA_USER*, unsigned, std::_Rb_tree_iterator<std::pair<unsigned const, IA_USER> >) (inetaccess.cpp:1797) ==29990== by 0x4F78909: AUTH_IA::PacketProcessor(char*, int, unsigned, unsigned short, int, std::_List_iterator<USER>*) (inetaccess.cpp:1106) ==29990== by 0x4F79409: AUTH_IA::RecvData(char*, int) (inetaccess.cpp:687) ==29990== by 0x4F79A67: AUTH_IA::Run(void*) (inetaccess.cpp:520) ==29990== by 0x406E046: start_thread (in /lib/libpthread-2.7.so) ==29990== ==29990== ERROR SUMMARY: 59600 errors from 9 contexts (suppressed: 75 from 2) ==29990== malloc/free: in use at exit: 9,076,604 bytes in 95,189 blocks. ==29990== malloc/free: 627,160,686 allocs, 627,065,497 frees, 140,537,398,226 bytes allocated. ==29990== For counts of detected errors, rerun with: -v ==29990== searching for pointers to 95,189 not-freed blocks. ==29990== checked 91,779,676 bytes. ==29990== ==29990== LEAK SUMMARY: ==29990== definitely lost: 312 bytes in 22 blocks. ==29990== possibly lost: 497,772 bytes in 25,733 blocks. ==29990== still reachable: 8,578,520 bytes in 69,434 blocks. ==29990== suppressed: 0 bytes in 0 blocks. ==29990== Rerun with --leak-check=full to see details of leaked memory. Сам старгейзер рисовал следующее: inetaccess.cpp > 19:08:28 > Monitor time 1223983222 1224259768 inetaccess.cpp > 19:08:28 > Min8(sizeof(ALIVE_SYN)) = 384 inetaccess.cpp > 19:08:28 > 1224261680.361205 384 bytes sent to 192.168.3.13:5555 len=384 inetaccess.cpp > 19:08:28 > Send_ALIVE_SYN_8 inetaccess.cpp > 19:08:28 > recv from 192.168.3.13 5555 len=64 inetaccess.cpp > 19:08:28 > User reiser FOUND! inetaccess.cpp > 19:08:28 > ======================> InitEncrypt dont needed inetaccess.cpp > 19:08:28 > Monitor time 1223983222 1224259768 inetaccess.cpp > 19:08:29 > recv from 194.169.205.18 5555 len=96 inetaccess.cpp > 19:08:29 > User indigo FOUND! inetaccess.cpp > 19:08:29 > ======================> InitEncrypt dont needed inetaccess.cpp > 19:08:29 > 1224261680.452731 32 bytes sent to 194.169.205.18:5555 len=32 inetaccess.cpp > 19:08:29 > Monitor time 1223983222 1224259769 inetaccess.cpp > 19:08:29 > Min8(sizeof(ALIVE_SYN)) = 384 inetaccess.cpp > 19:08:29 > 1224261680.465701 384 bytes sent to 192.168.3.20:5555 len=384 inetaccess.cpp > 19:08:29 > Send_ALIVE_SYN_8 inetaccess.cpp > 19:08:29 > recv from 194.169.205.18 5555 len=64 inetaccess.cpp > 19:08:29 > User indigo FOUND! inetaccess.cpp > 19:08:29 > ======================> InitEncrypt dont needed inetaccess.cpp > 19:08:29 > Send_FIN_8 users.cpp > 19:08:29 > Del IP Idx traffcounter.cpp > 19:08:29 > DelUser: indigo Более ни в логах, ни в консоле ничего нет.
madf Опубліковано: 18 жовтня, 2008 Опубліковано: 18 жовтня, 2008 Вот за это - спасибо. Тут уже можно попытаться что-то нарыть...
Silitra Опубліковано: 18 жовтня, 2008 Опубліковано: 18 жовтня, 2008 таже проблема, анология замечена в месте падения из постов что повыше: ==29990== Process terminating with default action of signal 11 (SIGSEGV)==29990== Access not within mapped region at address 0x1F60 ==29990== at 0x4070100: pthread_mutex_lock (in /lib/libpthread-2.7.so) ==29990== by 0x80921B6: STG_LOCKER::STG_LOCKER(pthread_mutex_t*, char const*, int) (stg_locker.h:59) ==29990== by 0x80ABCB3: USER::AddTraffStatD(int, unsigned, unsigned short, unsigned) (user.cpp:980) ==29990== by 0x80A4A1B: TRAFFCOUNTER::DelUser(std::_List_iterator<USER>) (traffcounter.cpp:640) ==29990== by 0x8096A9E: TRF_IP_BEFORE::Notify(unsigned const&, unsigned const&) (traffcounter.h:244) ==29990== by 0x80BADB3: USER_PROPERTY<unsigned>::operator=(unsigned const&) (user_property.h:211) ==29990== by 0x80AB984: USER::Unauthorize(BASE_AUTH const*) (user.cpp:574) ==29990== by 0x4F756D3: AUTH_IA::Send_FIN_8(IA_USER*, unsigned, std::_Rb_tree_iterator<std::pair<unsigned const, IA_USER> >) (inetaccess.cpp:1797) ==29990== by 0x4F78909: AUTH_IA::PacketProcessor(char*, int, unsigned, unsigned short, int, std::_List_iterator<USER>*) (inetaccess.cpp:1106) ==29990== by 0x4F79409: AUTH_IA::RecvData(char*, int) (inetaccess.cpp:687) ==29990== by 0x4F79A67: AUTH_IA::Run(void*) (inetaccess.cpp:520) что мы имеем: несколько падений в день на тестовом сервере, онлайн 150-300 всего юзеров 3.5К и машинка селерон 1800, 512 ram ось freeBSD 7. модули cap_netflow и file_store. загрузка cpu от 30-90%, запись детал.стат отрублена для всех. и первое падение за месяц на рабочем., машина, 2 dual xenon 3.3 и 4 gb ram, online примерно 1К, всего юеров 3.5К. OS freeBSD 7 модули ether_freebsd и mysql собственного написания. загрузка cpu от 15% до 50%. + mysql сьедает 1 из 4 CPU целиком во время записи детальной статы. видно что причина падения одна., возможно из за не верно раставленных блокировок. (gdb) bt #0 0x2814bfbe in pthread_mutex_lock () from /lib/libthr.so.3 #1 0x0808bbeb in STG_LOCKER (this=0xbf5fa90c, m=0x17e0, __file__=0x80d336d "user.cpp", __line__=911) at stg_locker.h:59 #2 0x080a802a in USER::AddTraffStatU (this=0x8, dir=0, ip=3832810564, dport=59127, sport=47747, len=131) at user.cpp:911 #3 0x0809f282 in TRAFFCOUNTER::DelUser (this=0x2843b060, user={_M_node = 0x28d22000}) at traffcounter.cpp:605 #4 0x08090ae1 in TRF_IP_BEFORE::Notify (this=0x2c769a48, oldValue=@0xbf5faaf8, newValue=@0xbf5fab40) at traffcounter.h:244 #5 0x080b7e02 in USER_PROPERTY<unsigned int>::operator= (this=0x28d22d20, newValue=@0xbf5fab40) at user_property.h:211 #6 0x080a756f in USER::Unauthorize (this=0x28d22008, auth=0x2844e000) at user.cpp:583 #7 0x2867bb8d in AUTH_IA::Send_FIN_6 (this=0x2844e000, iaUser=0x2cacf014, sip=1750247616, it={_M_node = 0x2cacf000}) at inetaccess.cpp:1774 #8 0x2867bc32 in AUTH_IA::Send_FIN_7 (this=0x2844e000, iaUser=0x2cacf014, sip=1750247616, it={_M_node = 0x2cacf000}) at inetaccess.cpp:1783 #9 0x2867ec4c in AUTH_IA::PacketProcessor (this=0x2844e000, buff=0xbf5fadb4 "@", dataLen=64, sip=1750247616, sport=10002, protoVer=7, user=0xbf5fad28) at inetaccess.cpp:1106 #10 0x2867f625 in AUTH_IA::RecvData (this=0x2844e000, buffer=0xbf5fad8c "00100", bufferSize=512) at inetaccess.cpp:690 #11 0x2867fbd5 in AUTH_IA::Run (d=0x2844e000) at inetaccess.cpp:523 #12 0x28147b1f in pthread_getprio () from /lib/libthr.so.3 #13 0x00000000 in ?? () (gdb) f 0 #0 0x2814bfbe in pthread_mutex_lock () from /lib/libthr.so.3 (gdb) l 523 ia->RecvData(buffer, sizeof(buffer)); 524 if ((touchTime + MONITOR_TIME_DELAY_SEC <= stgTime) && ia->stgSettings->GetMonitoring()) 525 { 526 touchTime = stgTime; 527 TouchFile(monFile.c_str()); 528 } 529 } 530 531 ia->isRunningRun = false; 532 return NULL; (gdb) f 1 #1 0x0808bbeb in STG_LOCKER (this=0xbf5fa90c, m=0x17e0, __file__=0x80d336d "user.cpp", __line__=911) at stg_locker.h:59 59 pthread_mutex_lock(mutex); (gdb) l 54 55 lockID = ++id; 56 cout << "Lock: " << lockID << " " << file << ":" << line << " " << mutex << " " << pthread_self() << endl; 57 pthread_mutex_unlock(&lockerMutex); 58 #endif 59 pthread_mutex_lock(mutex); 60 }; 61 62 ~STG_LOCKER() 63 { (gdb) f 2 #2 0x080a802a in USER::AddTraffStatU (this=0x8, dir=0, ip=3832810564, dport=59127, sport=47747, len=131) at user.cpp:911 911 (gdb) l 906 return authorizedBy.size(); 907 } 908 //----------------------------------------------------------------------------- 909 void USER::AddTraffStatU(int dir, uint32_t ip, uint16_t dport, uint16_t sport, uint32_t len) 910 { 911 912 if (!connected) 913 return; 914 915 double dc = 0; (gdb) f 3 #3 0x0809f282 in TRAFFCOUNTER::DelUser (this=0x2843b060, user={_M_node = 0x28d22000}) at traffcounter.cpp:605 605 pi.first->second->second.lenU); (gdb) l 600 { 601 pi.first->second->second.userU->AddTraffStatU(pi.first->second->second.dirU, 602 pi.first->second->first.GetDstIP(), 603 pi.first->second->first.GetDstPort(), 604 pi.first->second->first.GetSrcPort(), 605 pi.first->second->second.lenU); 606 } 607 pi.first->second->second.userUPresent = false; 608 } 609 (gdb) f 4 #4 0x08090ae1 in TRF_IP_BEFORE::Notify (this=0x2c769a48, oldValue=@0xbf5faaf8, newValue=@0xbf5fab40) at traffcounter.h:244 244 traffCnt->DelUser(user); (gdb) l 239 return; 240 241 if (!traffCnt) 242 return; 243 244 traffCnt->DelUser(user); 245 } 246 //----------------------------------------------------------------------------- 247 inline void TRF_IP_AFTER::Notify(const uint32_t & oldValue, const uint32_t & newValue) 248 { (gdb) f 5 #5 0x080b7e02 in USER_PROPERTY<unsigned int>::operator= (this=0x28d22d20, newValue=@0xbf5fab40) at user_property.h:211 211 (*ni++)->Notify(oldVal, newValue); (gdb) l 206 207 varT oldVal = value; 208 209 ni = beforeNotifiers.begin(); 210 while (ni != beforeNotifiers.end()) 211 (*ni++)->Notify(oldVal, newValue); 212 213 value = newValue; 214 modificationTime = stgTime; 215 (gdb) f 6 #6 0x080a756f in USER::Unauthorize (this=0x28d22008, auth=0x2844e000) at user.cpp:583 583 currIP = 0; (gdb) l 578 return; 579 580 if (authorizedBy.empty()) 581 { 582 lastIPForDisconnect = currIP; 583 currIP = 0; 584 return; 585 } 586 } 587 //----------------------------------------------------------------------------- (gdb) f 7 #7 0x2867bb8d in AUTH_IA::Send_FIN_6 (this=0x2844e000, iaUser=0x2cacf014, sip=1750247616, it={_M_node = 0x2cacf000}) at inetaccess.cpp:1774 1774 iaUser->user->Unauthorize(this); (gdb) l 1769 fin6.len = Min8(sizeof(FIN_6)); 1770 strcpy((char*)fin6.type, "FIN"); 1771 strcpy((char*)fin6.ok, "OK"); 1772 Encrypt(&iaUser->ctx, (char*)&fin6, (char*)&fin6, Min8(sizeof(fin6))/8); 1773 1774 iaUser->user->Unauthorize(this); 1775 1776 int ret = Send(sip, iaSettings.GetUserPort(), (char*)&fin6, Min8(sizeof(fin6))); 1777 ip2user.erase(it); 1778 return ret; (gdb) f 8 #8 0x2867bc32 in AUTH_IA::Send_FIN_7 (this=0x2844e000, iaUser=0x2cacf014, sip=1750247616, it={_M_node = 0x2cacf000}) at inetaccess.cpp:1783 1783 return Send_FIN_6(iaUser, sip, it); (gdb) l 1778 return ret; 1779 } 1780 //----------------------------------------------------------------------------- 1781 int AUTH_IA::Send_FIN_7(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it) 1782 { 1783 return Send_FIN_6(iaUser, sip, it); 1784 } 1785 //----------------------------------------------------------------------------- 1786 int AUTH_IA::Send_FIN_8(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it) 1787 { (gdb) f 9 #9 0x2867ec4c in AUTH_IA::PacketProcessor (this=0x2844e000, buff=0xbf5fadb4 "@", dataLen=64, sip=1750247616, sport=10002, protoVer=7, user=0xbf5fad28) at inetaccess.cpp:1106 1106 Send_FIN_7(iaUser, sip, it); (gdb) l 1101 { 1102 case 6: 1103 Send_FIN_6(iaUser, sip, it); 1104 break; 1105 case 7: 1106 Send_FIN_7(iaUser, sip, it); 1107 break; 1108 case 8: 1109 Send_FIN_8(iaUser, sip, it); 1110 break; (gdb) f 10 #10 0x2867f625 in AUTH_IA::RecvData (this=0x2844e000, buffer=0xbf5fad8c "00100", bufferSize=512) at inetaccess.cpp:690 690 PacketProcessor(buffer, dataLen, sip, sport, protoVer, &user); (gdb) l 685 686 user_iter user; 687 if (users->FindByName(login, &user) == 0) 688 { 689 // printfd(__FILE__, "User %s FOUND!\n", user->GetLogin().c_str()); 690 PacketProcessor(buffer, dataLen, sip, sport, protoVer, &user); 691 } 692 else 693 { 694 WriteServLog("User\'s connect failed:: user \'%s\' not found. IP \'%s\'", (gdb) f 11 #11 0x2867fbd5 in AUTH_IA::Run (d=0x2844e000) at inetaccess.cpp:523 523 ia->RecvData(buffer, sizeof(buffer)); (gdb) l 518 //printfd(__FILE__, "Monitor=%d file AUTH_IA %s\n", ia->stgSettings->GetMonitoring(), monFile.c_str()); 519 520 while (ia->nonstop) 521 { 522 // printfd(__FILE__, "Monitor time %d %d\n", touchTime, stgTime + 60); 523 ia->RecvData(buffer, sizeof(buffer)); 524 if ((touchTime + MONITOR_TIME_DELAY_SEC <= stgTime) && ia->stgSettings->GetMonitoring()) 525 { 526 touchTime = stgTime; 527 TouchFile(monFile.c_str()); (gdb) f 12 #12 0x28147b1f in pthread_getprio () from /lib/libthr.so.3 (gdb) l 528 } 529 } 530 531 ia->isRunningRun = false; 532 return NULL; 533 } 534 //----------------------------------------------------------------------------- 535 void * AUTH_IA::RunTimeouter(void * d) 536 { 537 AUTH_IA * ia; и вот вывод из консоли. лишнее вырезал. выше ничего интересного. traffcounter.cpp > 18:09:00 > FlushAndRemove() packets: 22272(rem 5185) ip2packets: 44544(rem 10370) user.cpp > 18:09:00 > USER::WriteStat user=kopity users.cpp > 18:09:00 > Sec = 1224331740 users.cpp > 18:09:00 > New Minute. old = 8 current = 9 users.cpp > 18:09:00 > RealDelUser() users to del: 0 users.cpp > 18:09:00 > Del IP Idx traffcounter.cpp > 18:09:00 > DelUser: kamenotes 1/1 addresses deleted. killed 10 states from 1 sources and 0 destinations users.cpp > 18:09:01 > Del IP Idx traffcounter.cpp > 18:09:01 > DelUser: bahtys7 Segmentation fault (core dumped)
zulu_Radist Опубліковано: 18 жовтня, 2008 Опубліковано: 18 жовтня, 2008 Я заметил что у меня старгейзер падает именно в момент перехода на новый час. То есть всегда падения были замечены в первую минуту нового часа, например системное время 19:01, 07:01, 22:01. А вот именно час когда он упадет несет случайный характер. Это имеет какой-то смысл?
madf Опубліковано: 19 жовтня, 2008 Опубліковано: 19 жовтня, 2008 Я заметил что у меня старгейзер падает именно в момент перехода на новый час. То есть всегда падения были замечены в первую минуту нового часа, например системное время 19:01, 07:01, 22:01. А вот именно час когда он упадет несет случайный характер. Это имеет какой-то смысл? Это имеет смысл. За логи всем спасибо - завтра буду их курить...
Silitra Опубліковано: 19 жовтня, 2008 Опубліковано: 19 жовтня, 2008 а нельзя их искурить сегодня и вместе ?
Dimension Опубліковано: 19 жовтня, 2008 Автор Опубліковано: 19 жовтня, 2008 Я заметил что у меня старгейзер падает именно в момент перехода на новый час. То есть всегда падения были замечены в первую минуту нового часа, например системное время 19:01, 07:01, 22:01. А вот именно час когда он упадет несет случайный характер. Это имеет какой-то смысл? у меня редко падает в начале часа... Wed Sep 17 08:30:01 EEST 2008 stargazer was stopped. Now is runnning Thu Oct 2 16:40:01 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 3 20:50:01 EEST 2008 stargazer was stopped. Now is runnning Mon Oct 6 09:20:01 EEST 2008 stargazer was stopped. Now is runnning Tue Oct 7 16:00:01 EEST 2008 stargazer was stopped. Now is runnning Wed Oct 15 10:10:01 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 17 07:00:01 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 17 12:13:01 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 17 17:02:01 EEST 2008 stargazer was stopped. Now is runnning Fri Oct 17 19:15:01 EEST 2008 stargazer was stopped. Now is runnning Sat Oct 18 04:58:01 EEST 2008 stargazer was stopped. Now is runnning Sat Oct 18 13:17:01 EEST 2008 stargazer was stopped. Now is runnning Sun Oct 19 00:42:01 EEST 2008 stargazer was stopped. Now is runnning Sun Oct 19 13:05:01 EEST 2008 stargazer was stopped. Now is runnning
Kucher2 Опубліковано: 19 жовтня, 2008 Опубліковано: 19 жовтня, 2008 Чёрт, скрипт перезапуска иногда действительно не срабатывает. Бывает, что СТГ остаётся висеть в памяти и 2-мя процессами, оставив корку и при этом потеряв работоспособность. Насколько я помню - процессов СТГ в памяти должно быть 2. У меня сейчас 4 висит. Похоже, что 2 из них просто трупы (я скрипт подправил чтобы шёл перезапуск если процессов СТГ 2 или менее в памяти - пол-второго, ничерта не соображаю, пусть пока так будет). О_о Причём когда в этой ситуации - вручную пытаюсь запустить СТГ, то он ругается в лог, что порт занят и завершает работу. Оно и понятно. Те 4 процесса так и остаются, СТГ работает. Заметил, что в период когда СТГ неработоспособен - консольный конфигуратор, естественно, не выполняет никаких команд. Может можно как-то через него привязать проверку "живости" СТГ, например добавляя кому-то денег и проверяя - изменились ли логи? Завести отдельного юзверя и использовать его как маяк? Наваяйте пожалуйста кто-то - этот скриптик в /sh, если не трудно.
Колян Опубліковано: 20 жовтня, 2008 Опубліковано: 20 жовтня, 2008 Чёрт, скрипт перезапуска иногда действительно не срабатывает. Бывает, что СТГ остаётся висеть в памяти и 2-мя процессами, оставив корку и при этом потеряв работоспособность. Насколько я помню - процессов СТГ в памяти должно быть 2. У меня сейчас 4 висит. Похоже, что 2 из них просто трупы (я скрипт подправил чтобы шёл перезапуск если процессов СТГ 2 или менее в памяти - пол-второго, ничерта не соображаю, пусть пока так будет). О_о Причём когда в этой ситуации - вручную пытаюсь запустить СТГ, то он ругается в лог, что порт занят и завершает работу. Оно и понятно. Те 4 процесса так и остаются, СТГ работает. Заметил, что в период когда СТГ неработоспособен - консольный конфигуратор, естественно, не выполняет никаких команд. Может можно как-то через него привязать проверку "живости" СТГ, например добавляя кому-то денег и проверяя - изменились ли логи? Завести отдельного юзверя и использовать его как маяк? Наваяйте пожалуйста кто-то - этот скриптик в /sh, если не трудно. Я так и проверял. Есть скрипт на пхп. Нада?
Silitra Опубліковано: 20 жовтня, 2008 Опубліковано: 20 жовтня, 2008 ушли от основной темы, нужно лечить болезнь а не пытатся раз за разом воскрешать покойника. madf что скажешь на счет предоставленной инфы? лично мне кажется что проблема описанная тут http://local.com.ua/forum/index.php?s=&...st&p=100297 и болезнь обсуждаемая в этом топике взаимосвязанны. решил сравнить код stg-2.4-2007.01.20-13.47.20 и stg-2.405.9.8 по сравнению с stg-2.4-2007 в ver405 STG_LOCKER lock(&mutex, __FILE__, __LINE__); добавленно в функии USER::Connect USER::Disconnect USER::Run USER::UpdatePingTime USER::IsInetable USER::AddTraffStatU USER::AddTraffStatD USER::GetEnabledDirs USER::ResetDetailStat USER::WriteDetailStat USER::GetPassiveTimePart USER::SetPassiveTimeAsNewUser USER::ProcessDayFeeSpread USER::ProcessDayFee USER::SetPrepaidTraff USER::AddMessage USER::SendMessage USER::ScanMessage USERS::AddToIPIdx USERS::DelFromIPIdx USERS::FindByIPIdx USERS::SetUserNotifiers USERS::UnSetUserNotifiers USERS::AddUserIntoIndexes USERS::DelUserFromIndexes исключено из USERS::Del хотя в USERS::Add осталось и самое главное не блокировки в TRAFFCOUNTER::AddUser TRAFFCOUNTER::DelUser именно на TRAFFCOUNTER::DelUser все тормозится, верней на вызове из нее USER::AddTraffStatU или USER::AddTraffStatD.. думаем дальше
Kucher2 Опубліковано: 20 жовтня, 2008 Опубліковано: 20 жовтня, 2008 ушли от основной темы Согласен, но надо же, чтобы работало - пока идёт мозговая атака. Я так и проверял. Есть скрипт на пхп. Нада? Переделал скрипт проверки и рестарта СТГ.
madf Опубліковано: 21 жовтня, 2008 Опубліковано: 21 жовтня, 2008 Есть результаты по логу, представленному Keen. Не буду утверждать что мы нашли причину падений, но уже есть некоторые мысли. Постараюсь держать вас в курсе дела.
madf Опубліковано: 21 жовтня, 2008 Опубліковано: 21 жовтня, 2008 Я бы озвучил, но у меня сейчас мысли в другом русле. Проблемой Боря занимается
Dimension Опубліковано: 23 жовтня, 2008 Автор Опубліковано: 23 жовтня, 2008 Кстати может быть поможет такое наблюдение: у 2х сетей эти падения стали чаще после увеличения ширины интернет канала....
Andriy Опубліковано: 23 жовтня, 2008 Опубліковано: 23 жовтня, 2008 Кстати может быть поможет такое наблюдение: у 2х сетей эти падения стали чаще после увеличения ширины интернет канала.... 100% коли були на 4мб - то рідше падіня були, коли підняли до 6 - то кожен день по купу раз... десь від 10 до 30(40).. дивно але згадую часи з приємністю коли канал був менший і клієнти менше довбали...
Dimension Опубліковано: 24 жовтня, 2008 Автор Опубліковано: 24 жовтня, 2008 Я бы озвучил, но у меня сейчас мысли в другом русле. Проблемой Боря занимается А нельзя ли что бы Боря зашел в эту тему и чего то отписал ну и заодно почитал наши коменты... возможно это ускорит процесс...
Silitra Опубліковано: 24 жовтня, 2008 Опубліковано: 24 жовтня, 2008 2Madf Когда примерно будет патч?, время идет. Хотя бы пусть Борис сообщит в чем дело примерно, сами расколупаем проблему.
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас