laffytaffy 84 Posted 2009-07-13 14:49:20 Share Posted 2009-07-13 14:49:20 Стоит на 3-х сервах по 4000 юзеров (около 1000 онлайн). Пока без замечаний.Веб-интерфейс, я думаю, умирает. Алферова давно не слышно, все пишут свои. 2 IP на один логин - это, типа, одновременно? Все фичи буду пилить после релиза. Сейчас его как раз готовлю. To madf подскажите, как можно попробовать сборку, т.е. перекинуть рабочую базу на другую машинку с предварительно установленной новой сборкой или можно как-то мою обгрейдить? конфигурация база MySQL Link to post Share on other sites
madf 279 Posted 2009-07-13 14:59:10 Author Share Posted 2009-07-13 14:59:10 Ну перенести базу средствами mysql, потом установить на тестовую машинку stargazer. Трафик захватывать NetFlow-сенсором и отдавать двум коллекторам: рабочему серву и тестовому. Правда, если у пользователей не стоит Always online - толку от этого мало. Базы 406-й версии совместимы с 405-й. Link to post Share on other sites
Bolik_Stav 0 Posted 2009-07-16 17:46:14 Share Posted 2009-07-16 17:46:14 Веб-интерфейс, я думаю, умирает. Алферова давно не слышно, все пишут свои. ну а что делать тем, которые сами писать не умеют ... пользоватся умирающим веб-фейсом Link to post Share on other sites
debug-er 0 Posted 2009-07-21 23:29:49 Share Posted 2009-07-21 23:29:49 Всем привет разрешите ворваться в работу? ось линух - ClarkConnect 5.0 он же CenOS 5.3, установил 2.406-rc1, юзаю модуль mysql звездочет падал при каждой записи WriteDetailedStat() - минимум 1/6 = 10 мин. да и здесь на форуме вычитал что время падения в логах часто по нулям или около того начал ковырять и вот что выковырял: while (stIter != statTree->end()) { sprintf(param," IP='%s', dir=%d, down=%lld, up=%lld, cash=%f, sess_id='%s'", (смотрю этот код присутствует во всех версиях mysql и веб и не веб) из-за цикла в запрос дважды вставлялся "хвост": " IP='%s', dir=%d, down=%lld, up=%lld, cash=%f, sess_id='%s'" и конечно скуль ругался на это поменял на условие и падения прекратились if (stIter != statTree->end()) { sprintf(param," IP='%s', dir=%d, down=%lld, up=%lld, cash=%f, sess_id='%s'", правда он пока работает почти в холостую - считается один юзер test если есть у кого нибудь возможность проверить/потестировать именно mysql то пожалуйста напишите буду рад если это поможет в развитии звездочета Link to post Share on other sites
madf 279 Posted 2009-07-22 08:34:28 Author Share Posted 2009-07-22 08:34:28 1. Информация о том что падение происходит именно в WriteDetailStat точна? Есть строка в которой происходит падение? А лечше цепочка кадров стека. Если есть - закинь мне в почту: faust@stg.dp.ua 2. Кусок кода для версии 406-rc1 выглядит несколько иначе (баг с записью в хвост я помню - сам исправлял): while (stIter != statTree->end()) { strprintf(&tempStr,"IP='%s', dir=%d, down=%lld, up=%lld, cash=%f", inet_ntostring(stIter->first.ip).c_str(), stIter->first.dir, stIter->second.down, stIter->second.up, stIter->second.cash ); if( (retRes = MysqlQuery((res+tempStr).c_str(),sock)) ) { errorStr = "Couldn't insert data in WriteDetailedStat:\n"; errorStr += mysql_error(sock); mysql_close(sock); return -1; } result=mysql_store_result(sock); if(result) mysql_free_result(result); ++stIter; } Смысл этого цикла - итерация по дереву со статистикой. Если заменить while на if мы будем записывать только одну запись статистики (прошу прощения за каламбур), а не все. Это хорошо что кто-то обратил внимание на модуль mysql. Если есть желание и возможность его улучшить - всегда рад проконсультировать. Link to post Share on other sites
S_ergey 21 Posted 2009-07-22 09:31:00 Share Posted 2009-07-22 09:31:00 Как вылечить ткните носом. OS ALT-Linux 2009-07-22 11:37:17 -- +++++++++++++++++++++++++++++++++++++++++++++ 2009-07-22 12:09:58 -- Stg v. 2.406-rc1 2009-07-22 12:09:58 -- Message queue created successfully. msgKey=6666 msgID=294913 2009-07-22 12:09:58 -- Timer thread started successfully. 2009-07-22 12:09:58 -- Storage plugin: 'Error loading plugin '/usr/lib/stg2/mod_store_files.so': '/usr/lib/stg2/mod_store_files.so: undefined symbol: _Z14inet_ntostringj'' 2009-07-22 12:09:59 -- Queue removed successfully. 2009-07-22 12:09:59 -- StgTimer: Stop successfull. 2009-07-22 12:09:59 -- Stg stopped successfully. Link to post Share on other sites
madf 279 Posted 2009-07-22 09:34:37 Author Share Posted 2009-07-22 09:34:37 Проинсталлить библиотеки. libstg_common.so от старой версии. Link to post Share on other sites
debug-er 0 Posted 2009-07-22 09:40:12 Share Posted 2009-07-22 09:40:12 1. Информация о том что падение происходит именно в WriteDetailStat точна? Есть строка в которой происходит падение? А лечше цепочка кадров стека. Если есть - закинь мне в почту: faust@stg.dp.uaне, стека нет, но есть текст ошибки скуля, то что происходит во WriteDetailStat абсолютно точно - такого запроса больше нет нигде, вечером отпишу 2. Кусок кода для версии 406-rc1 выглядит несколько иначе (баг с записью в хвост я помню - сам исправлял): strprintf(&tempStr,"IP='%s', dir=%d, down=%lld, up=%lld, cash=%f", а где сессия sess_id? Смысл этого цикла - итерация по дереву со статистикой. Если заменить while на if мы будем записывать только одну запись статистики (прошу прощения за каламбур), а не все.да да, эт понятно, просто задачу сводил к вылавливанию бага.значит надо в конце цикла сделать чтото типа tempStr = ''; (сорри, цэ не знаю, пишу как на пхп) Это хорошо что кто-то обратил внимание на модуль mysql. Если есть желание и возможность его улучшить - всегда рад проконсультировать.желание есть, чем смогу помогу.спасибо за поддержку! Link to post Share on other sites
madf 279 Posted 2009-07-22 09:51:18 Author Share Posted 2009-07-22 09:51:18 1. Ясно. Да, такой баг был и он был исправлен в какой-то из 406-х. Падение происходило потому что в модуле mod_store_mysql нет нормальной обработки ошибок. 2. Нету, потому что это специфичная фишка для админки Алферова. Там патчатся как исходники модуля, так и сам Stargazer. В официальной ветке мы этот параметр не поддерживаем. 3. В конце цикла не нужно обнулять строку, т.к. strprintf делает не конкатенацию а присваивание. Приведенный мной кусок кода из rc1 работает в этой ситуации корректно. Есть прекрастная возможнсть изучить C++ Link to post Share on other sites
madf 279 Posted 2009-07-22 09:52:33 Author Share Posted 2009-07-22 09:52:33 1. Ясно. Да, такой баг был и он был исправлен в какой-то из 406-х. Падение происходило потому что в модуле mod_store_mysql нет нормальной обработки ошибок. 2. Нету, потому что это специфичная фишка для админки Алферова. Там патчатся как исходники модуля, так и сам Stargazer. В официальной ветке мы этот параметр не поддерживаем. 3. В конце цикла не нужно обнулять строку, т.к. strprintf делает не конкатенацию а присваивание. Приведенный мной кусок кода из rc1 работает в этой ситуации корректно. Есть прекрасная возможность изучить C++ Link to post Share on other sites
debug-er 0 Posted 2009-07-22 10:25:05 Share Posted 2009-07-22 10:25:05 1. Ясно. Да, такой баг был и он был исправлен в какой-то из 406-х. Падение происходило потому что в модуле mod_store_mysql нет нормальной обработки ошибок.2. Нету, потому что это специфичная фишка для админки Алферова. Там патчатся как исходники модуля, так и сам Stargazer. В официальной ветке мы этот параметр не поддерживаем. 3. В конце цикла не нужно обнулять строку, т.к. strprintf делает не конкатенацию а присваивание. Приведенный мной кусок кода из rc1 работает в этой ситуации корректно. Есть прекрасная возможность изучить C++ 1. 3. понял, тогда сегодня буду оф 2.406-rc1 гонять. да нафиг обработка ошибок? все должно работать без ошибок 2. значит будем без сессий обходиться, я в общемто за веб мордой и полез, но тормознулся на падении. падений не будет - пойдем дальше З.Ы. пару вопросов для размышления: 1. возможно к звездочету коллектором подключить ipcad? 2. кто может помочь с такой штукой - в sgconfig есть автообновление инфы. суть в том чтобы сделать его регулируемым, к примеру >100 раз в секунду, провести т.н. стресс тест. тогда имхо многое наружу повылезает. понятно что юзерам это ни к чему, а вот для тестов было бы очень полезно. то же самое и с inetaccess - сделать обновление чаще и запустить их обоих, вот это будет атака Link to post Share on other sites
madf 279 Posted 2009-07-22 10:37:28 Author Share Posted 2009-07-22 10:37:28 Прикрутить можно все что угодно. На сколько я понял, он может отдавать трафик по NetFlow, так что даже прикручивать ничего не потребуется - все уже прикручено. Достаточно включить cap_nf и настроить ipcad на отдачу по NetFlow. Стресс-тест для конфигуратора лучше не делать, результат будет печальным Там очень древний и глючной код, мы его потихоньку облагораживаем, но пока все печально. Стресс-тест для авторизатора и так есть - у нас специальный модуль для этого. Да и любой более-менее крупный провайдер такой стресс-тест каждый день выдерживает Код плагина авторизатора мы к 405 версии переписали более-менее нормально (хотя тут у нас с Борей расходятся мнения , он такие вещи без проблем выдерживает. Link to post Share on other sites
S_ergey 21 Posted 2009-07-22 11:32:40 Share Posted 2009-07-22 11:32:40 Проинсталлить библиотеки.libstg_common.so от старой версии. Ошибка та же. либы от версии 2.404 Link to post Share on other sites
madf 279 Posted 2009-07-22 11:48:35 Author Share Posted 2009-07-22 11:48:35 Ошибка та же.либы от версии 2.404 Об этом я и говорю. Для 406-rc1 либы должны быть от 406-rc1. Link to post Share on other sites
S_ergey 21 Posted 2009-07-22 12:20:49 Share Posted 2009-07-22 12:20:49 Об этом я и говорю. Для 406-rc1 либы должны быть от 406-rc1. Хоро спрошу по другому. Что нужно изменить чтобы stargazer брал либы с /usr/lib/stg2 как указано в конфиге и не лез в /usr/lib/stg З.Ы. В /usr/lib/stg лежат либы рабочей версии 2.404 .Версию 2.406 хочу включить для теста. Link to post Share on other sites
madf 279 Posted 2009-07-22 12:29:22 Author Share Posted 2009-07-22 12:29:22 Либы берет не старгейзер а системный компоновщик ld.so. Его можно сконфигурировать при сборке. Для этого нужно в файле stglibs/Makefile.in, файле projects/stargazer/Makefile и файле projects/stargazer/plugins/Makefile.in заменить строку -Wl,-rpath,$(PREFIX)/usr/lib/stg на -Wl,-rpath,$(PREFIX)/usr/lib/stg2 А можно сконфигурировать его перед самым запуском. Для этого нужно установить переменную окружения LD_LIBRARY_PATH=/usr/lib/stg2 Естественно, второй способ проще и предпочтительнее правки Makefile'ов. Тот путь, который прописывается в конфиге старгейзера используется только для поиска плагинов. Его, соответстсвенно, тоже нужно указать как /usr/lib/stg2 Link to post Share on other sites
madf 279 Posted 2009-07-22 12:31:59 Author Share Posted 2009-07-22 12:31:59 К стати, если планируется запустить 2 версии stargazer на одной машине одновременно - советую поменять ExecMsgKey так чтобы он для разных экземпляров был разный, иначе могут быть проблемы с выполнением скриптов. Link to post Share on other sites
S_ergey 21 Posted 2009-07-22 13:09:54 Share Posted 2009-07-22 13:09:54 Теперь все гут спасибо. Link to post Share on other sites
S_ergey 21 Posted 2009-07-22 20:20:17 Share Posted 2009-07-22 20:20:17 Тесты завершились удачно и версия 406-rc1 ушла в бой онлайн за 1200. В бою выясняется что у народа глючит авторизатор версии 2.44.7 и 2.55.7 Где взять исходники авторизатора 2.61.8 ??? Link to post Share on other sites
madf 279 Posted 2009-07-23 08:44:25 Author Share Posted 2009-07-23 08:44:25 Как глючит? Должен работать четко, обратную совместимость мы не ломали. Link to post Share on other sites
Bolik_Stav 0 Posted 2009-07-26 05:53:12 Share Posted 2009-07-26 05:53:12 Как глючит?Должен работать четко, обратную совместимость мы не ломали. и когда ждать это чёткого релиза ? Link to post Share on other sites
madf 279 Posted 2009-07-27 11:05:42 Author Share Posted 2009-07-27 11:05:42 и когда ждать это чёткого релиза ? Можно использовать rc1. Критических исправлений после него небыло. Только чистка кода. Link to post Share on other sites
rem_lex 2 Posted 2009-07-27 12:27:19 Share Posted 2009-07-27 12:27:19 Debian GNU/Linux 5.0 ядро 2.6.26-2-amd64 #1 SMP Fri Mar 27 04:02:59 UTC 2009 x86_64 GNU/Linux не собирается rlm_stg, лог: # ./build ############################################################################# Building rlm_stg for Linux ############################################################################# Checking endianess... Little Endian make -C /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../stglibs includes make[1]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs' make includes -C crypto.lib make[2]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/crypto.lib' cp -p ag_md5.h blowfish.h /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include make[2]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/crypto.lib' make includes -C common.lib make[2]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/common.lib' cp -p debug.h stg_error.h common.h /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include make[2]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/common.lib' make[1]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs' make -C /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../stglibs make[1]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs' make -C crypto.lib make[2]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/crypto.lib' make[2]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/crypto.lib' make[2]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/crypto.lib' cc -I/usr/local/include -DARCH_LE -fPIC -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -I ./ -DLINUX -DSTG_TIME -c ag_md5.c cc -I/usr/local/include -DARCH_LE -fPIC -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -I ./ -DLINUX -DSTG_TIME -c blowfish.cpp g++ -L/usr/local/lib -shared -Wl,-rpath,//usr/lib/stg -Wl,-soname,libstg_crypto.so ag_md5.o blowfish.o -o libstg_crypto.so -L /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../lib ar rc libstg_crypto.a ag_md5.o blowfish.o ranlib libstg_crypto.a cp *.so /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../lib cp *.a /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../lib make[2]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/crypto.lib' make -C common.lib make[2]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/common.lib' make[2]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/common.lib' make[2]: Entering directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/common.lib' cc -I/usr/local/include -DARCH_LE -fPIC -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -I ./ -DLINUX -DSTG_TIME -c debug.c cc -I/usr/local/include -DARCH_LE -fPIC -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -I ./ -DLINUX -DSTG_TIME -c stg_error.c cc -I/usr/local/include -DARCH_LE -fPIC -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -I ./ -DLINUX -DSTG_TIME -c common.cpp cc -I/usr/local/include -DARCH_LE -fPIC -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -I ./ -DLINUX -DSTG_TIME -c stg_strptime.cpp g++ -L/usr/local/lib -shared -Wl,-rpath,//usr/lib/stg -Wl,-soname,libstg_common.so debug.o stg_error.o common.o stg_strptime.o /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../lib/libstg_crypto.so -o libstg_common.so -L /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../lib ar rc libstg_common.a debug.o stg_error.o common.o stg_strptime.o ranlib libstg_common.a cp *.so /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../lib cp *.a /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../lib make[2]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs/common.lib' make[1]: Leaving directory `/home/alex/stg-2.4-2009.03.25-12.27.21.my/stglibs' cc -c rlm_stg.cpp -I/usr/local/include -DARCH_LE -Wall -fPIC -I./ -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -DLINUX cc -c stg_client.cpp -I/usr/local/include -DARCH_LE -Wall -fPIC -I./ -I /home/alex/stg-2.4-2009.03.25-12.27.21.my/projects/rlm_stg/../../include -DLINUX stg_client.cpp: In member function ‘void STG_CLIENT::InitEncrypt()’: stg_client.cpp:77: error: ‘memset’ was not declared in this scope stg_client.cpp:78: error: ‘strncpy’ was not declared in this scope stg_client.cpp: In member function ‘int STG_CLIENT::Request(RAD_PACKET*, const std::string&, const std::string&, uint8_t)’: stg_client.cpp:183: error: ‘memcpy’ was not declared in this scope stg_client.cpp:188: error: ‘strncpy’ was not declared in this scope stg_client.cpp:199: error: ‘strncmp’ was not declared in this scope stg_client.cpp: In member function ‘int STG_CLIENT::Account(const std::string&, const std::string&, const std::string&, const std::string&)’: stg_client.cpp:269: error: ‘strncpy’ was not declared in this scope stg_client.cpp: In member function ‘void STG_CLIENT::Encrypt(char*, const char*, int)’: stg_client.cpp:302: error: ‘memcpy’ was not declared in this scope stg_client.cpp: In member function ‘void STG_CLIENT::Decrypt(char*, const char*, int)’: stg_client.cpp:312: error: ‘memcpy’ was not declared in this scope make: *** [stg_client.o] Ошибка 1 добавлял #include <unistd.h> не помогает, куда копать? Link to post Share on other sites
rem_lex 2 Posted 2009-07-27 12:34:12 Share Posted 2009-07-27 12:34:12 выгуглил, нехватает еще #include <string.h> так, теперь не запускается: # freeradius -X ............................... radiusd: #### Instantiating modules #### instantiate { /etc/freeradius/radiusd.conf[1597]: Invalid version in module 'rlm_stg' Errors initializing modules radiusd.conf: [1596] ### STG [1597] stg { [1598] local_port = 6667 [1599] server = localhost [1560] port = 6666 [1561] password = 123456 [1562] } # freeradius -v freeradius: FreeRADIUS Version 2.0.4, for host x86_64-pc-linux-gnu, built on Sep 7 2008 at 17:42:33 есть идеи? Link to post Share on other sites
madf 279 Posted 2009-07-28 11:02:03 Author Share Posted 2009-07-28 11:02:03 unistd.h не нужен Вместо string.h лучше использовать cstring "Invalid version in module" - я модуль писал под ветку 1.*. Возможно, во 2-й поломали обратную совместимость. Link to post Share on other sites
Recommended Posts