madf Posted March 24, 2009 Posted March 24, 2009 Итак, пришло время первого релиз-кандидата: stg-2.406-rc1 По сравнению с beta-версией изменений немного. В основном - чистка кода. Был исправлен баг, который вызывал падения при останове Stargazer на старых версиях libc (по крайней мере я его четко фиксировал на FreeBSD 5.3-RELEASE). Кому интересно, подробности про него можно найти здесь (на украинском языке). Почистил отладочный вывод. Добавил явную выгрузку плагинов (в релизе верну ее в автоматический режим). Перекомпоновал последовательность инициализации и останова различных подсистем. Внес небольшие изменения в систему сборки. Теперь флаги компилятора и компоновщика для плагина MySQL определяются с помощью утилиты mysql_config (должен быть в стандартном devel-пакете на всех системах). Скрипт build при отладочной сборке не запускает make автоматически (сделал для удобства багрепортов - чтобы не просить показать первые N строк лога сборки). Не-devel сборка происходит как и раньше. В КК добавил ключ --disable-stat. Пользоваться так: получение статуса: sgconf get -s <server> -p <port> -a <admin> -w <admin_pass> -u <user> --disable-stat отключение детальной статистики: sgconf set -s <server> -p <port> -a <admin> -w <admin_pass> -u <user> --disable-stat 1 включение детальной статистики: sgconf set -s <server> -p <port> -a <admin> -w <admin_pass> -u <user> --disable-stat 0 Еще в КК починил результат операции. Одно время он говорил Error при успешной отправке сообщения, а все остальное работало нормально. В прошлой версии стало наоборот - он стал говорить Ok при успешной отправке сообщения, зато все остальные операции выдавали Error. Проблема оказалась не такой уж и тривиальной. Эту сборку я тестировал на следующих системах: Gentoo: gcc-3.3.5 gcc-3.3.5-hardened gcc-3.3.5-hardenednopie gcc-3.3.5-hardenednossp gcc-4.1.1 gcc-4.3.3 Debian: gcc-4.3.2 FreeBSD: gcc-3.4.2 Еще раз напомню, что gcc ветки 2.x больше не поддерживается. Хотел еще дождаться результатов сборки от мейнтейнеров ALTLinux, но не дождался Отправку сообщений с помощью КК тестировал из юникодной локали и из KOI8-R.
Slava Posted March 24, 2009 Posted March 24, 2009 GentooLinux2008_32bit, gcc version 4.1.2, expat-2.0.1, Kernel 2.6.24.7скомпилировалась и запустилась без проблем.
Watson Posted March 24, 2009 Posted March 24, 2009 2009-03-24 23:47:35 -- --------------------------------------------- 2009-03-24 23:51:13 -- Stg v. 2.406-rc1 2009-03-24 23:51:13 -- Message queue created successfully. msgKey=5555 msgID=360448 2009-03-24 23:51:13 -- Timer thread started successfully. 2009-03-24 23:51:13 -- Storage plugin: '' 2009-03-24 23:51:14 -- Queue removed successfully. 2009-03-24 23:51:14 -- StgTimer: Stop successfull. 2009-03-24 23:51:14 -- Stg stopped successfully. 2009-03-24 23:51:14 -- --------------------------------------------- Чет у меня не хочет стартовать, собралось нормально. ALT-server-2.6.18-32x64, queue.
madf Posted March 25, 2009 Author Posted March 25, 2009 Какой StoreModule указан в конфиге? Смущает что у тебя он пустой.
Kucher2 Posted March 25, 2009 Posted March 25, 2009 2009-03-24 23:47:35 -- ---------------------------------------------2009-03-24 23:51:13 -- Stg v. 2.406-rc1 2009-03-24 23:51:13 -- Message queue created successfully. msgKey=5555 msgID=360448 2009-03-24 23:51:13 -- Timer thread started successfully. 2009-03-24 23:51:13 -- Storage plugin: '' 2009-03-24 23:51:14 -- Queue removed successfully. 2009-03-24 23:51:14 -- StgTimer: Stop successfull. 2009-03-24 23:51:14 -- Stg stopped successfully. 2009-03-24 23:51:14 -- --------------------------------------------- Чет у меня не хочет стартовать, собралось нормально. ALT-server-2.6.18-32x64, queue. Такая же фигня была: не бери конфиг от старой системы, правь новый. Потом только меняешь /var/stargazer/users/, /var/stargazer/admins/, /etc/stargazer/OnConnect, /etc/stargazer/OnDisconnect - на старые и стартуй stargazer.
madf Posted March 25, 2009 Author Posted March 25, 2009 Хм. Я не ломал конфиг. Кто покажет разницу между нерабочим и рабочим конфигом?
Kucher2 Posted March 25, 2009 Posted March 25, 2009 Хез, но у меня выдавала такую же ошибку. Тогда я оставил каталоги прежнего СТГ на своих местах, установил новый СТГ поверх, стартанул его - он запустился, только ругнулся на отсутствующие интерфейсы (там в конфиге указаны - у меня их нет) - и завершил процесс. Тогда я подправил конфиг под себя - поменял порт авторизатора на 8888, оставил ИФ rl0, сменил права на файлы на 777, убрал лишние направления. Потом, как сказал выше - вернул /var/stargazer/users/, /var/stargazer/admins/, /etc/stargazer/OnConnect, /etc/stargazer/OnDisconnect - из резервной копии (установка точно меняет /var/stargazer/admins/ и скрипты /etc/stargazer/OnConnect, /etc/stargazer/OnDisconnect, а /var/stargazer/users/ я для верности восстановил), потом стартанул СТГ и вуаля. Щас вроде собрал sgconf. У кого он при старте бибилиотеку просит - её надо вытащить из дистибутива (каталог /lib/) и положить в /usr/lib/stg/.
lalex Posted March 25, 2009 Posted March 25, 2009 новая версия собралась и запустилась нормально. ждём дальнейших результатов работы. можно получить более подробное описание опции "executersnum"? по умолчанию этот параметр равен 1. в каком случае его нужно увеличить? в какой ситуации-случае?
madf Posted March 25, 2009 Author Posted March 25, 2009 ExecutersNum отвечает за количество запущеных "выполнителей скриптов" - процессов stg-exec. Его можно увеличить если скорость отработки скриптов не удовлетворяет. Рекомендую увеличивать, если скрипты сами по себе тормозные.
Kucher2 Posted March 25, 2009 Posted March 25, 2009 Нашёл бяку: если в stargazer.conf сделать это: RemoveBak = yes ReadBak = yes то при попытке запуска он вываливается с этой же ошибкой. У меня FreeBSD 6.2, файлы базы СТГ-шные.
lalex Posted March 25, 2009 Posted March 25, 2009 этот ответ я нашел и в официальной справке. если параметр выставить - 2 или 10? на что он повлияет? каким образом выяснить в каких случаях нужно менять этот параметр и что означает "тормознутый скрипт"?
madf Posted March 25, 2009 Author Posted March 25, 2009 Исправил, перезалил архив. Кому лень вытягивать весь архив - вот патч: p3.patch Накладывать из корня так: $ patch -p0 < p3.patch
madf Posted March 25, 2009 Author Posted March 25, 2009 этот ответ я нашел и в официальной справке. если параметр выставить - 2 или 10? на что он повлияет? каким образом выяснить в каких случаях нужно менять этот параметр и что означает "тормознутый скрипт"? Если выставить 2 - запустится 2 процесса stg-exec и система сможет одновременно выполнять 2 скрипта. Если выставить 10 - 10, соответственно. Выставлять в случае если тебя не удовлетворяет скорость отработки скриптов (например, не сразу включается интернет пользователями когда происходит много одновременных авторизаций).
Super Posted March 25, 2009 Posted March 25, 2009 Если выставить 2 - запустится 2 процесса stg-exec и система сможет одновременно выполнять 2 скрипта. Если выставить 10 - 10, соответственно.Выставлять в случае если тебя не удовлетворяет скорость отработки скриптов (например, не сразу включается интернет пользователями когда происходит много одновременных авторизаций). При установке значения 2 и больше наблюдаются проблемы с одновременным выполнением скриптов - чего-то некоторые правила iptables вообще не отрабатывают. Особенно это сказывается при старте старгейзера - не всем alwaysOnline пользователям поднимались разрешающие правила. Так и не разобрался почему. Оставил значение 1.
lalex Posted March 25, 2009 Posted March 25, 2009 При установке значения 2 и больше наблюдаются проблемы с одновременным выполнением скриптов - чего-то некоторые правила iptables вообще не отрабатывают. Особенно это сказывается при старте старгейзера - не всем alwaysOnline пользователям поднимались разрешающие правила. Так и не разобрался почему. Оставил значение 1. это в какой версии наблюдалось? и на какой конфигурации ПС?
Super Posted March 26, 2009 Posted March 26, 2009 stg-2.405, SuSe 10.2, ядро 2.6.22 - база в текстовых файлах
madf Posted March 26, 2009 Author Posted March 26, 2009 Да нет, конфигурация тут не при чем. Возможно дело в скриптах. Может они не могут выполняться одновременно.
Slava Posted March 26, 2009 Posted March 26, 2009 Появилась проблема при старте страгайзера не образатываются OnConnect для пользователей всегда онлайн после старта в конфигураторе ставлю и убираю галочку "всегда онлайн" ставлю снова - инет появляется. В логах на этот счет ничего. Подскажите что можкт быть
Super Posted March 26, 2009 Posted March 26, 2009 Появилась проблема при старте страгайзера не образатываются OnConnect для пользователей всегда онлайн после старта в конфигураторе ставлю и убираю галочку "всегда онлайн" ставлю снова - инет появляется. В логах на этот счет ничего. Подскажите что можкт быть Вот, и у меня такое было, и только на пользователях "всегда онлайн", и только если stg-exec>1 Оставил stg-exec=1 и в ус не дую
madf Posted March 26, 2009 Author Posted March 26, 2009 Можна примеры скриптов на faust@stg.dp.ua? Не получилось повторить у себя, в т.ч. на ExecutersNum=2
lalex Posted March 26, 2009 Posted March 26, 2009 Примеры скриптов отправил ExecutersNum=1 а сюда можно их предоставить? для сравнения... может отыщутся общие "глючные" нюансы.
Slava Posted March 26, 2009 Posted March 26, 2009 а сюда можно их предоставить? для сравнения... может отыщутся общие "глючные" нюансы. Вот собственно и скрипты буду рад если укажут на возможные ошибки #OnConnect #!/bin/bash # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 DIRS=$5 DinM=( 31 28 31 30 31 30 31 31 30 31 30 31 ) D=`date '+%Y-%m-%d %H-%M-%S'` Month=${D:5:2} Day=${D:8:2} D=`date '+%Y-%m-%d %H-%M-%S'` usersconf="/stargazer/bases/users/$LOGIN/conf" userstat="/stargazer/bases/users/$LOGIN/stat" tariffs="/stargazer/bases/tariffs" #NEW_IP="/stargazer/bases/Userdata0" #IFACE="/stargazer/bases/Userdata1" NM="NETMASK" BC="BRODKAST" GW="GW" realip_key="realip" k=kbit TariffName=`cat "$usersconf" | grep "Tariff=" | cut -d"=" -f2` IP_=`cat "$usersconf" | grep "IP=" | cut -d"=" -f2` CashN=`cat "$userstat" | grep "Cash=" | cut -d"=" -f2` NEW_IP=`cat "$usersconf" | grep "Userdata0=" | cut -d"=" -f2` IFACE=`cat "$usersconf" | grep "Userdata1=" | cut -d"=" -f2` echo IFACE=$IFACE New_IP=$NEW_IP if [ ! -e "$usersconf" ]; then echo "ERROR: User file '$usersconf' not found" >> $logfile exit fi TariffName=`cat "$usersconf" | grep "Tariff=" | cut -d"=" -f2` if [ "_${TariffName#$realip_key}" != "_${TariffName}" ]; then # #ДЛЯ ТАРИФОВ С РЕАЛЬНИКОМ ifconfig $IFACE $NEW_IP netmask $NM broadcast $BC route add $NEW_IP gw $GW netmask 0.0.0.0 metric 1 dev $IFACE iptables -t nat -A PREROUTING -p tcp -d $NEW_IP -j DNAT --to-destination $IP_ iptables -A FORWARD -i eth0 -d $IP_ -j QUEUE iptables -A FORWARD -i eth1 -d $IP_ -j QUEUE iptables -I FORWARD -s $IP_ ! -d 10.0.0.0/8 -j QUEUE iptables -I FORWARD -d $IP_ ! -s 10.0.0.0/8 -j QUEUE iptables -t nat -I POSTROUTING 1 -s $IP_ -d ! 10.0.0.0/8 -j MASQUERADE iptables -t nat -I POSTROUTING -s $IP_ -j SNAT --to-source $NEW_IP iptables -t nat -I POSTROUTING -d $NEW_IP -s 10.0.0.0/8 -j SNAT --to-source $IP_ else # ДЛЯ ТАРИФОВ БЕЗ РЕАЛЬНИКА inet=$DIRS inet2=${inet:1:1} # echo IP=$IP_ dirs=$DIRS inet=$inet2 >> /etc/stargazer/log if [ $inet2 != "0" ]; then iptables -I FORWARD -s $IP_ ! -d 10.0.0.0/8 -j QUEUE iptables -I FORWARD -d $IP_ ! -s 10.0.0.0/8 -j QUEUE iptables -t nat -I POSTROUTING 1 -s $IP_ -d ! 10.0.0.0/8 -j MASQUERADE fi games=$DIRS games2=${games:0:1} if [ $games2 != "0" ]; then iptables -I FORWARD -s $IP_ -d x.x.x.x/x -j QUEUE iptables -I FORWARD -d $IP_ -s x.x.x.x/x -j QUEUE iptables -t nat -I POSTROUTING 1 -s $IP_ -d x.x.x.x/x -j MASQUERADE iptables -I FORWARD -s $IP_ -d x.x.x.x -j QUEUE iptables -I FORWARD -d $IP_ -s x.x.x.x -j QUEUE iptables -t nat -I POSTROUTING 1 -s $IP_ -d x.x.x.x -j MASQUERADE fi fi #OnDisconnect #!/bin/bash #LOGIN="fssc" # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 DinM=( 31 28 31 30 31 30 31 31 30 31 30 31 ) D=`date '+%Y-%m-%d %H-%M-%S'` Month=${D:5:2} Day=${D:8:2} D=`date '+%Y-%m-%d %H-%M-%S'` usersconf="/stargazer/bases/users/$LOGIN/conf" userstat="/stargazer/bases/users/$LOGIN/stat" tariffs="/stargazer/bases/tariffs" NM="NETMASK" BC="BRODKAST" GW="GW" realip_key="realip" k=kbit TariffName=`cat "$usersconf" | grep "Tariff=" | cut -d"=" -f2` IP_=`cat "$usersconf" | grep "IP=" | cut -d"=" -f2` CashN=`cat "$userstat" | grep "Cash=" | cut -d"=" -f2` NEW_IP=`cat "$usersconf" | grep "Userdata0=" | cut -d"=" -f2` IFACE=`cat "$usersconf" | grep "Userdata1=" | cut -d"=" -f2` echo $IP_ if [ ! -e "$usersconf" ]; then echo "ERROR: User file '$usersconf' not found" >> $logfile exit fi TariffName=`cat "$usersconf" | grep "Tariff=" | cut -d"=" -f2` if [ "_${TariffName#$realip_key}" != "_${TariffName}" ]; then # # ДЛЯ ТАРИФОВ С РЕАЛЬНИКОМ echo realIP iptables -D FORWARD -i eth0 -d $IP_ -j QUEUE iptables -t nat -D PREROUTING -p tcp -d $NEW_IP -j DNAT --to-destination $IP_ route del $NEW_IP gw $GW netmask 0.0.0.0 metric 1 dev $IFACE ifconfig $IFACE down iptables -D FORWARD -i eth0 -d $IP_ -j QUEUE iptables -D FORWARD -i eth1 -d $IP_ -j QUEUE iptables -D FORWARD -s $IP_ ! -d 10.0.0.0/8 -j QUEUE iptables -D FORWARD -d $IP_ ! -s 10.0.0.0/8 -j QUEUE iptables -t nat -D POSTROUTING -s $IP_ -d ! 10.0.0.0/8 -j MASQUERADE iptables -t nat -D POSTROUTING -s $IP_ -j SNAT --to-source $NEW_IP iptables -t nat -D POSTROUTING -d $NEW_IP -s 10.0.0.0/8 -j SNAT --to-source $IP_ else # ДЛЯ ТАРИФОВ БЕЗ РЕАЛЬНИКА iptables -D FORWARD -s $IP_ ! -d 10.0.0.0/8 -j QUEUE iptables -D FORWARD -d $IP_ ! -s 10.0.0.0/8 -j QUEUE iptables -t nat -D POSTROUTING -s $IP_ -d ! 10.0.0.0/8 -j MASQUERADE iptables -D FORWARD -s $IP_ -d x.x.x.x/x -j QUEUE iptables -D FORWARD -d $IP_ -s x.x.x.x/x -j QUEUE iptables -t nat -D POSTROUTING -s $IP_ -d x.x.x.x/x -j MASQUERADE iptables -D FORWARD -s $IP_ -d x.x.x.x -j QUEUE iptables -D FORWARD -d $IP_ -s x.x.x.x -j QUEUE iptables -t nat -D POSTROUTING -s $IP_ -d x.x.x.x -j MASQUERADE iptables -D FORWARD -s x.x.x.x -d $IP_ -j DROP iptables -D FORWARD -d x.x.x.x -s $IP_ -j DROP fi
Recommended Posts