Jump to content

Не все юзеры подключаются при рестарте


Recommended Posts

FreeBSD 8.2-Stable

Поставили новый сервер, новый старгазер 2.407-p1 (был 2.406)

php 5.3.8

 

 

При рестарте недоподключает 50-60 юзеров (скорее всего не срабатывает OnConnect)

 

В логах СТГ пусто.

 

Модули:

@mod_ao.conf																				  
@mod_cap_bpf.conf																		
@mod_ia.conf
@mod_rpc.conf																			  
@mod_sg.conf																				
@store_mysql.conf

 

В чем может быть проблема? Не знаю где рыть.

 

OnConnect

#!/bin/sh

LOGIN=$1
IP=$2
CASH=$3
ID=$4
/etc/stargazer/param online ${LOGIN} online	# php script добавляет в базу пометку что подключился
SPEED=`/etc/stargazer/param speed $LOGIN` # php script вытягивает скорость

fwcmd="/sbin/ipfw -q"

${fwcmd} table 13 delete ${IP}

if [ ${SPEED} = 128 ]
then
${fwcmd} table 1 add ${IP}
else
fi
if [ ${SPEED} = 256 ]
then
${fwcmd} table 2 add ${IP}
else
fi
..........

 

Скрипт запуска

#!/bin/sh
#
#
# PROVIDE: stargazer
# REQUIRE: mysql
# KEYWORD: FreeBSD
#
# Add the following lines to /etc/rc.conf to enable stargazer:
#
#stargazer_enable="YES"
#stargazer_flags="string" - Path to STG config dir
#
. /etc/rc.subr
name=stargazer
rcvar=`set_rcvar`
command=/usr/sbin/stargazer # Path to stargazer binary												 

start_precmd="start_precmd"																			
start_postcmd="start_postcmd"																		  
start_precmd()
{
   sleep 2
   }
   start_postcmd()
   {
		  ps -ax | grep $command | grep -v grep | awk '{print $1;}' > $pidfile
  }
  pidfile=/var/run/stargazer.pid
  stop_postcmd=stop_postcmd
  stop_postcmd()
  {
   killall stargazer
    rm -f $pidfile
}
# set defaults
stargazer_enable=${stargazer_enable:-"NO"}
stargazer_flags=${stargazer_flags:-"/etc/stargazer"}
required_files=${stargazer_flags}/stargazer.conf
load_rc_config $name
run_rc_command "$1"

 

P.S. Первый день работал нормально, потом нужно было рестартонуть сервер и все.

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

Top Posters In This Topic

Небыло, попробую увеличить ExecutersNum до 2 и количество одновременных соединений mysql

Link to post
Share on other sites

После ребута сервака все подключились, если рестартонуть сам стг, опять та же трабла :D

Link to post
Share on other sites

Ну щас около 300 онлайн

Те юзера крторые не подключились попали в OnDisconnect

Не понял. Для них что, вместо OnConnect выполнился OnDisconnect?

Или сразу после OnConnect сработал OnDisconnect?

Или не сразу а по прошествии некоторого времени?

 

Есть идеи?

Мне нужно понять условия наиболее вероятного воспроизведения проблемы чтобы у себя локально ее повторить. Тогда и идеи будут...

Link to post
Share on other sites

Юзера сразу после старта стг попадают в ондисконнект. НО! При рестарте сервера все ок, все подключаются. Но когда руками рестартонуть стг, некоторые юзеры попадают в ондисконнект. На тестовом сервере такого не повторяется. В чем беда, ума не приложу :)

Link to post
Share on other sites

Юзера сразу после старта стг попадают в ондисконнект. НО! При рестарте сервера все ок, все подключаются. Но когда руками рестартонуть стг, некоторые юзеры попадают в ондисконнект. На тестовом сервере такого не повторяется. В чем беда, ума не приложу :)

Так, еще раз. При старте для некоторых абонов выполняется OnDisconnect вместо OnConnect? Или просто не выполняется OnConnect?

Нужно учесть что рестарт - это стоп и старт. И при стопе для всех подключенных абонов выполняется OnDisconnect.

Link to post
Share on other sites

А, величина скрипта ОнКоннект какая? Можно было бы одним глазком на него глянуть?

Как вариант напихать разных проверок в скрипт - и посмотреть на каком месте затыкается ОнКоннект, либо он вообще не запускается.

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

Link to post
Share on other sites

Та, писец. Наверное конкуренты в шпионы к вам зарылись. :)

Короче, что я бы сделал, вначале скрипта ОнКоннект до любых действий пробовать писать в файл(с именем юзера), что скрипт запустился. Это первое, что проверить или вообще стж запускает скрипт, если по всем, кто всегдаонлайн и скрипт запускается, дальше смотреть, почему не отрабатываются правила. Может где-то по ходу работы скрипта вылазит ошибка и скрипт прежде временно завершает свою работу.

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

Это одна из мыслей, что мне пришла в голову.

Link to post
Share on other sites

Полный онконект. Версию mysql тоже менял (

 

#! /bin/sh

LOGIN=$1
IP=$2
CASH=$3
ID=$4
echo $2 >> /home/morfey/44.txt - # НЕ ЗАНОСИТ ИП НЕКОТОРЫХ ЮЗЕРОВ
/etc/stargazer/param online ${LOGIN} online # Пишет в базу что юзер онлайн, то же что и с предыдущим скриптом.
SPEED=`/etc/stargazer/param speed $LOGIN`

fwcmd="/sbin/ipfw -q"

${fwcmd} table 13 delete ${IP}

if [ ${SPEED} = 128 ]
then
${fwcmd} table 1 add ${IP}
else
fi
if [ ${SPEED} = 256 ]
then
${fwcmd} table 2 add ${IP}
else
fi
if [ ${SPEED} = 512 ]
then
${fwcmd} table 3 add ${IP}
else
fi
if [ ${SPEED} = 1024 ]
then
${fwcmd} table 4 add ${IP}
else
fi
if [ ${SPEED} = 1536  ]
then
${fwcmd} table 5 add ${IP}
else
fi
if [ ${SPEED} = 2048 ]
then
${fwcmd} table 6 add ${IP}
else
fi
if [ ${SPEED} = 3072 ]
then
${fwcmd} table 7 add ${IP}
else
fi
if [ ${SPEED} = 4096 ]
then
${fwcmd} table 8 add ${IP}
else
fi
if [ ${SPEED} = 5120 ]
then
${fwcmd} table 9 add ${IP}
else
fi
if [ ${SPEED} = 5000 ]
then
${fwcmd} table 9 add ${IP}
else
fi
if [ ${SPEED} = 10240 ]
then
${fwcmd} table 10 add ${IP}
else
fi
if [ ${SPEED} = 20480 ]
then
${fwcmd} table 11 add ${IP}
else
fi
if [ ${SPEED} = 102400 ]
then
${fwcmd} table 12 add ${IP}
else
fi

Link to post
Share on other sites

А, что с другими параметрами?

echo $2 >> /home/morfey/44.txt - # НЕ ЗАНОСИТ ИП НЕКОТОРЫХ ЮЗЕРОВ

IP может не заносить, потому что передается в скрипт пустое значение, нужно попоробовать с другими параметрами (например $1, $2, $3, $4)

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

 

echo "user_podklychilsa" >> /home/morfey/44.txt - # НЕ ЗАНОСИТ ИП НЕКОТОРЫХ ЮЗЕРОВ

И все равно, надо еще как-то все же проверить именно какой юзер.

Например можно сделать так.

Имеем онлайн юзеров 300 человек.

Вот в нашем файле и должно быть 300 строчек "user_podklychilsa", если их нету или например 299, тогда 100% нету запуска скрипта ОнКоннект в некоторых случаях и душить нужно сам стж.

 

 

Добавляю.

Не досмотрел.

/etc/stargazer/param online ${LOGIN} online # Пишет в базу что юзер онлайн, то же что и с предыдущим скриптом.

Вот что и имеем, айпи не передается, а логин передается. Уже что-то есть, можно и обращатсья к madf'y.

У меня например уже идеи кончились, надо рыть сам стж, чего так.

 

 

ЗЫ:

Не пробовал переустановить СТЖ? Может где-то что-то кривовато стало?

И еще юзеры всегда одни и те же не срабатывают или каждый раз разные?

 

Можно попробовать так

if [ $2 == "" ]
then
 echo $1 >> /home/morfey/44.txt - # Пишем логины юзеров, у которых передается айпишка пустая.
fi

И понаблюдать или это одни и теже логины, если одни и теже, может что-то случилось с БД, как вариант. Хотя как я понял, что при ручном подключении юзера после старта стж все работает. хз-хз.

Link to post
Share on other sites
Не пробовал переустановить СТЖ? Может где-то что-то кривовато стало?

 

И еще юзеры всегда одни и те же не срабатывают или каждый раз разные?

 

Переустанавливал, и в дебаг режиме тоже.

 

Можно попробовать так

 

if [ $2 == "" ]
then
 echo $1 >> /home/morfey/44.txt - # Пишем логины юзеров, у которых передается айпишка пустая.
fi

Вот это завтра попробую.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...