Jump to content

Stg-2.406-rc1


Recommended Posts

Стоит на 3-х сервах по 4000 юзеров (около 1000 онлайн). Пока без замечаний.

Веб-интерфейс, я думаю, умирает. Алферова давно не слышно, все пишут свои.

2 IP на один логин - это, типа, одновременно?

Все фичи буду пилить после релиза. Сейчас его как раз готовлю.

 

 

To madf

 

подскажите, как можно попробовать сборку, т.е. перекинуть рабочую базу на другую машинку с предварительно установленной новой сборкой или можно как-то мою обгрейдить?

 

конфигурация

 

база MySQL

 

post-11557-1247496435_thumb.jpg

Link to post
Share on other sites
  • Replies 153
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Ну перенести базу средствами mysql, потом установить на тестовую машинку stargazer.

Трафик захватывать NetFlow-сенсором и отдавать двум коллекторам: рабочему серву и тестовому. Правда, если у пользователей не стоит Always online - толку от этого мало.

Базы 406-й версии совместимы с 405-й.

Link to post
Share on other sites
Веб-интерфейс, я думаю, умирает. Алферова давно не слышно, все пишут свои.

ну а что делать тем, которые сами писать не умеют ... пользоватся умирающим веб-фейсом

Link to post
Share on other sites

Всем привет

разрешите ворваться в работу?

 

ось линух - 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

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

Как вылечить ткните носом.

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

1. Ясно. Да, такой баг был и он был исправлен в какой-то из 406-х. Падение происходило потому что в модуле mod_store_mysql нет нормальной обработки ошибок.

2. Нету, потому что это специфичная фишка для админки Алферова. Там патчатся как исходники модуля, так и сам Stargazer. В официальной ветке мы этот параметр не поддерживаем.

3. В конце цикла не нужно обнулять строку, т.к. strprintf делает не конкатенацию а присваивание. Приведенный мной кусок кода из rc1 работает в этой ситуации корректно.

 

Есть прекрастная возможнсть изучить C++ :lol:

Link to post
Share on other sites

1. Ясно. Да, такой баг был и он был исправлен в какой-то из 406-х. Падение происходило потому что в модуле mod_store_mysql нет нормальной обработки ошибок.

2. Нету, потому что это специфичная фишка для админки Алферова. Там патчатся как исходники модуля, так и сам Stargazer. В официальной ветке мы этот параметр не поддерживаем.

3. В конце цикла не нужно обнулять строку, т.к. strprintf делает не конкатенацию а присваивание. Приведенный мной кусок кода из rc1 работает в этой ситуации корректно.

 

Есть прекрасная возможность изучить C++ :lol:

Link to post
Share on other sites
1. Ясно. Да, такой баг был и он был исправлен в какой-то из 406-х. Падение происходило потому что в модуле mod_store_mysql нет нормальной обработки ошибок.

2. Нету, потому что это специфичная фишка для админки Алферова. Там патчатся как исходники модуля, так и сам Stargazer. В официальной ветке мы этот параметр не поддерживаем.

3. В конце цикла не нужно обнулять строку, т.к. strprintf делает не конкатенацию а присваивание. Приведенный мной кусок кода из rc1 работает в этой ситуации корректно.

 

Есть прекрасная возможность изучить C++ ;)

 

1. 3. понял, тогда сегодня буду оф 2.406-rc1 гонять. да нафиг обработка ошибок? все должно работать без ошибок ;)

2. значит будем без сессий обходиться, я в общемто за веб мордой и полез, но тормознулся на падении. падений не будет - пойдем дальше

 

З.Ы. пару вопросов для размышления:

1. возможно к звездочету коллектором подключить ipcad?

2. кто может помочь с такой штукой - в sgconfig есть автообновление инфы. суть в том чтобы сделать его регулируемым, к примеру >100 раз в секунду, провести т.н. стресс тест. тогда имхо многое наружу повылезает. понятно что юзерам это ни к чему, а вот для тестов было бы очень полезно. то же самое и с inetaccess - сделать обновление чаще и запустить их обоих, вот это будет атака :lol:

Link to post
Share on other sites

Прикрутить можно все что угодно. На сколько я понял, он может отдавать трафик по NetFlow, так что даже прикручивать ничего не потребуется - все уже прикручено. Достаточно включить cap_nf и настроить ipcad на отдачу по NetFlow.

Стресс-тест для конфигуратора лучше не делать, результат будет печальным ;) Там очень древний и глючной код, мы его потихоньку облагораживаем, но пока все печально.

Стресс-тест для авторизатора и так есть - у нас специальный модуль для этого. Да и любой более-менее крупный провайдер такой стресс-тест каждый день выдерживает ;) Код плагина авторизатора мы к 405 версии переписали более-менее нормально (хотя тут у нас с Борей расходятся мнения :lol:, он такие вещи без проблем выдерживает.

Link to post
Share on other sites
Ошибка та же.

либы от версии 2.404

Об этом я и говорю. Для 406-rc1 либы должны быть от 406-rc1.

Link to post
Share on other sites
Об этом я и говорю. Для 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

Либы берет не старгейзер а системный компоновщик 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

К стати, если планируется запустить 2 версии stargazer на одной машине одновременно - советую поменять ExecMsgKey так чтобы он для разных экземпляров был разный, иначе могут быть проблемы с выполнением скриптов.

Link to post
Share on other sites

Тесты завершились удачно ;) и версия 406-rc1 ушла в бой онлайн за 1200.

В бою выясняется что у народа глючит авторизатор версии 2.44.7 и 2.55.7

Где взять исходники авторизатора 2.61.8 ???

Link to post
Share on other sites
и когда ждать это чёткого релиза ?

Можно использовать rc1. Критических исправлений после него небыло. Только чистка кода.

Link to post
Share on other sites

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

выгуглил, нехватает еще

#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

unistd.h не нужен

Вместо string.h лучше использовать cstring

"Invalid version in module" - я модуль писал под ветку 1.*. Возможно, во 2-й поломали обратную совместимость.

Link to post
Share on other sites
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...