Перейти до

Рекомендованные сообщения

Опубліковано:
а откуда ты береш время падения?

Из скрипта? Скрипт по крону грузится?

ну да, он же и влог отдельный пишет....

З.Ы. еще одно падение произошло, что скрипт не смог поднять...

  • Відповіді 135
  • Створено
  • Остання відповідь

Top Posters In This Topic

Опубліковано:

madf, обьясни пожалуйста поподробней что нужно сделать, что бы помочь тебе в выявлении глюка. Какое логирование и как включить, что зачем делать и т.п....

Опубліковано:
З.Ы. еще одно падение произошло, что скрипт не смог поднять...

 

Попробуй это.

У меня недавно было падение, всё как надо сработало. Только читай внимательно что я там написал внизу.

Опубліковано:
А я вижу закономерность :)

Падает когда наступает новая минута.

Отдуплился, что он узнает что стг упал и подымает его на 1й минуте... Это все скрипт... А вот когда он падает.... ?

Опубліковано:

если кому интересно скрипт перезапуска работает пока как часы

 

#!/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, обьясни пожалуйста поподробней что нужно сделать, что бы помочь тебе в выявлении глюка. Какое логирование и как включить, что зачем делать и т.п....

Для начала скажи, какие модули используеш и какие патчи накладывал (если накладывал, конечно).

Опубліковано:

Опять падение. Немного длинным сообщение получится:

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

 

Более ни в логах, ни в консоле ничего нет.

Опубліковано:

таже проблема, анология замечена в месте падения

из постов что повыше:

==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)

Опубліковано:

Я заметил что у меня старгейзер падает именно в момент перехода на новый час. То есть всегда падения были замечены в первую минуту нового часа, например системное время 19:01, 07:01, 22:01. А вот именно час когда он упадет несет случайный характер. Это имеет какой-то смысл?

Опубліковано:
Я заметил что у меня старгейзер падает именно в момент перехода на новый час. То есть всегда падения были замечены в первую минуту нового часа, например системное время 19:01, 07:01, 22:01. А вот именно час когда он упадет несет случайный характер. Это имеет какой-то смысл?

Это имеет смысл.

 

За логи всем спасибо - завтра буду их курить...

Опубліковано:
Я заметил что у меня старгейзер падает именно в момент перехода на новый час. То есть всегда падения были замечены в первую минуту нового часа, например системное время 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

Опубліковано:

Чёрт, скрипт перезапуска иногда действительно не срабатывает. Бывает, что СТГ остаётся висеть в памяти и 2-мя процессами, оставив корку и при этом потеряв работоспособность. ;)

Насколько я помню - процессов СТГ в памяти должно быть 2. У меня сейчас 4 висит. Похоже, что 2 из них просто трупы (я скрипт подправил чтобы шёл перезапуск если процессов СТГ 2 или менее в памяти - пол-второго, ничерта не соображаю, пусть пока так будет). О_о

Причём когда в этой ситуации - вручную пытаюсь запустить СТГ, то он ругается в лог, что порт занят и завершает работу. Оно и понятно. Те 4 процесса так и остаются, СТГ работает.

 

Заметил, что в период когда СТГ неработоспособен - консольный конфигуратор, естественно, не выполняет никаких команд. Может можно как-то через него привязать проверку "живости" СТГ, например добавляя кому-то денег и проверяя - изменились ли логи? Завести отдельного юзверя и использовать его как маяк? Наваяйте пожалуйста кто-то - этот скриптик в /sh, если не трудно. :)

Опубліковано:
Чёрт, скрипт перезапуска иногда действительно не срабатывает. Бывает, что СТГ остаётся висеть в памяти и 2-мя процессами, оставив корку и при этом потеряв работоспособность. ;)

Насколько я помню - процессов СТГ в памяти должно быть 2. У меня сейчас 4 висит. Похоже, что 2 из них просто трупы (я скрипт подправил чтобы шёл перезапуск если процессов СТГ 2 или менее в памяти - пол-второго, ничерта не соображаю, пусть пока так будет). О_о

Причём когда в этой ситуации - вручную пытаюсь запустить СТГ, то он ругается в лог, что порт занят и завершает работу. Оно и понятно. Те 4 процесса так и остаются, СТГ работает.

 

Заметил, что в период когда СТГ неработоспособен - консольный конфигуратор, естественно, не выполняет никаких команд. Может можно как-то через него привязать проверку "живости" СТГ, например добавляя кому-то денег и проверяя - изменились ли логи? Завести отдельного юзверя и использовать его как маяк? Наваяйте пожалуйста кто-то - этот скриптик в /sh, если не трудно. :)

Я так и проверял. Есть скрипт на пхп. Нада?

Опубліковано:

ушли от основной темы, нужно лечить болезнь а не пытатся раз за разом воскрешать покойника.

madf что скажешь на счет предоставленной инфы?

 

лично мне кажется что проблема описанная тут http://local.com.ua/forum/index.php?s=&amp...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.. думаем дальше

Опубліковано:

Есть результаты по логу, представленному Keen. Не буду утверждать что мы нашли причину падений, но уже есть некоторые мысли. Постараюсь держать вас в курсе дела.

Опубліковано:

Кстати может быть поможет такое наблюдение: у 2х сетей эти падения стали чаще после увеличения ширины интернет канала....

Опубліковано:
Кстати может быть поможет такое наблюдение: у 2х сетей эти падения стали чаще после увеличения ширины интернет канала....

 

100%

коли були на 4мб - то рідше падіня були, коли підняли до 6 - то кожен день по купу раз... десь від 10 до 30(40)..

дивно але згадую часи з приємністю коли канал був менший і клієнти менше довбали...

Опубліковано:
Я бы озвучил, но у меня сейчас мысли в другом русле. Проблемой Боря занимается ;)

А нельзя ли что бы Боря зашел в эту тему и чего то отписал ну и заодно почитал наши коменты... возможно это ускорит процесс...

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    • Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...