Перейти к содержимому
Local
morfey

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

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

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. Первый день работал нормально, потом нужно было рестартонуть сервер и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На 2.406 такого эффекта нет?

Как вариант - увеличить ExecutersNum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а ще обовязково увімкнути slow_query_log і натицькати індексів по полям що живуть в where :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не помогло ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А сколько всего онлайновых юзеров?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть идеи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Было как-то я тоже словил такой глюк, но только один раз. Так я тогда тоже не понял из-за чего это.

Попробуйте 407.рц-3 у меня пока эта версия стоит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм. Протестил на другом серваке, проблема не повторилась :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

 

Есть идеи?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Перепроверил, не срабатывает онконнект:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще 3правила таких же как вверху

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как только так и сразу. У нас еще и аплинк упал, с телефона сижу (((

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Полный онконект. Версию 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


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

 

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

 

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Це однозначно щось кармічне :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Войти

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

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×