morfey 82 Опубликовано: 2011-09-22 10:04:32 Share Опубликовано: 2011-09-22 10:04:32 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. Первый день работал нормально, потом нужно было рестартонуть сервер и все. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-22 12:58:57 Share Опубліковано: 2011-09-22 12:58:57 На 2.406 такого эффекта нет? Как вариант - увеличить ExecutersNum Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-22 13:37:59 Автор Share Опубліковано: 2011-09-22 13:37:59 Небыло, попробую увеличить ExecutersNum до 2 и количество одновременных соединений mysql Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2011-09-22 13:44:19 Share Опубліковано: 2011-09-22 13:44:19 а ще обовязково увімкнути slow_query_log і натицькати індексів по полям що живуть в where Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-22 15:16:02 Автор Share Опубліковано: 2011-09-22 15:16:02 Не помогло Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-22 15:36:56 Автор Share Опубліковано: 2011-09-22 15:36:56 Выхлоп с debug http://pastebin.com/cN2J0x4G Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-22 15:42:16 Share Опубліковано: 2011-09-22 15:42:16 А сколько всего онлайновых юзеров? Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-22 15:44:37 Автор Share Опубліковано: 2011-09-22 15:44:37 Ну щас около 300 онлайн Те юзера крторые не подключились попали в OnDisconnect Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 07:37:01 Автор Share Опубліковано: 2011-09-23 07:37:01 Есть идеи? Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2011-09-23 09:40:04 Share Опубліковано: 2011-09-23 09:40:04 Было как-то я тоже словил такой глюк, но только один раз. Так я тогда тоже не понял из-за чего это. Попробуйте 407.рц-3 у меня пока эта версия стоит. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 09:51:09 Автор Share Опубліковано: 2011-09-23 09:51:09 Хм. Протестил на другом серваке, проблема не повторилась Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 11:20:08 Автор Share Опубліковано: 2011-09-23 11:20:08 После ребута сервака все подключились, если рестартонуть сам стг, опять та же трабла Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-23 11:51:39 Share Опубліковано: 2011-09-23 11:51:39 Ну щас около 300 онлайн Те юзера крторые не подключились попали в OnDisconnect Не понял. Для них что, вместо OnConnect выполнился OnDisconnect? Или сразу после OnConnect сработал OnDisconnect? Или не сразу а по прошествии некоторого времени? Есть идеи? Мне нужно понять условия наиболее вероятного воспроизведения проблемы чтобы у себя локально ее повторить. Тогда и идеи будут... Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 12:31:42 Автор Share Опубліковано: 2011-09-23 12:31:42 Юзера сразу после старта стг попадают в ондисконнект. НО! При рестарте сервера все ок, все подключаются. Но когда руками рестартонуть стг, некоторые юзеры попадают в ондисконнект. На тестовом сервере такого не повторяется. В чем беда, ума не приложу Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-09-23 13:58:33 Share Опубліковано: 2011-09-23 13:58:33 Юзера сразу после старта стг попадают в ондисконнект. НО! При рестарте сервера все ок, все подключаются. Но когда руками рестартонуть стг, некоторые юзеры попадают в ондисконнект. На тестовом сервере такого не повторяется. В чем беда, ума не приложу Так, еще раз. При старте для некоторых абонов выполняется OnDisconnect вместо OnConnect? Или просто не выполняется OnConnect? Нужно учесть что рестарт - это стоп и старт. И при стопе для всех подключенных абонов выполняется OnDisconnect. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 14:22:37 Автор Share Опубліковано: 2011-09-23 14:22:37 Перепроверил, не срабатывает онконнект Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2011-09-23 14:34:29 Share Опубліковано: 2011-09-23 14:34:29 А, величина скрипта ОнКоннект какая? Можно было бы одним глазком на него глянуть? Как вариант напихать разных проверок в скрипт - и посмотреть на каком месте затыкается ОнКоннект, либо он вообще не запускается. На предмет запуска в начало вставить какую-то писалку в файл - тип я запустился, потом можно было бы попробовать писать или вытянуло скорость для юзера, ну и т.д. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 14:38:49 Автор Share Опубліковано: 2011-09-23 14:38:49 Еще 3правила таких же как вверху Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2011-09-23 14:49:44 Share Опубліковано: 2011-09-23 14:49:44 Зайди в аську, а то спрятался там. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 15:11:28 Автор Share Опубліковано: 2011-09-23 15:11:28 Как только так и сразу. У нас еще и аплинк упал, с телефона сижу ((( Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2011-09-23 15:12:24 Share Опубліковано: 2011-09-23 15:12:24 Та, писец. Наверное конкуренты в шпионы к вам зарылись. Короче, что я бы сделал, вначале скрипта ОнКоннект до любых действий пробовать писать в файл(с именем юзера), что скрипт запустился. Это первое, что проверить или вообще стж запускает скрипт, если по всем, кто всегдаонлайн и скрипт запускается, дальше смотреть, почему не отрабатываются правила. Может где-то по ходу работы скрипта вылазит ошибка и скрипт прежде временно завершает свою работу. Попробуй сваргань какой-то простенький совсем скрипт, без подгрузки дополнительных, типа узнавания скорости и писалки, что юзер онлайн. Это одна из мыслей, что мне пришла в голову. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 15:28:38 Автор Share Опубліковано: 2011-09-23 15:28:38 Полный онконект. Версию 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 Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2011-09-23 16:51:48 Share Опубліковано: 2011-09-23 16:51:48 А, что с другими параметрами? 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 И понаблюдать или это одни и теже логины, если одни и теже, может что-то случилось с БД, как вариант. Хотя как я понял, что при ручном подключении юзера после старта стж все работает. хз-хз. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2011-09-23 18:00:20 Автор Share Опубліковано: 2011-09-23 18:00:20 Не пробовал переустановить СТЖ? Может где-то что-то кривовато стало? И еще юзеры всегда одни и те же не срабатывают или каждый раз разные? Переустанавливал, и в дебаг режиме тоже. Можно попробовать так if [ $2 == "" ] then echo $1 >> /home/morfey/44.txt - # Пишем логины юзеров, у которых передается айпишка пустая. fi Вот это завтра попробую. Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2011-09-23 18:07:16 Share Опубліковано: 2011-09-23 18:07:16 Це однозначно щось кармічне Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас