Jump to content
Local
madf

stg-2.407-p1

Recommended Posts

Внезапно, ровно через месяц после релиза, вышло исправление: stg-2.407-p1.

Исправлена критическая ошибка, приводящая к зацикливаню при отправке сообщения с повторами. Ошибка была найдена и исправлена благодаря Неизвестному Админу Неизвестной Сети который ее обнаружил и любезно предоставил мне shell.

Так же исправлена историческая опечатка при журналировании: теперь вместо "alredy" пишется "already". Историческая - потому что тянется еще с первых версий и я ее уже однажды исправлял :). Так что если у вас на этот keyword завязаны какие-нибуть анализаторы логов - обратите внимание.

 

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

stg-2.407-p1.tar.gz

Share this post


Link to post
Share on other sites

похоже эта проблема (с отправкой сообщений) давно уже живет.

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

ща обновлюсь - и попробую опять отправку сообщений

Share this post


Link to post
Share on other sites

А, я вообще перестал отправлять сообщения своим абонентам.

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

Share this post


Link to post
Share on other sites

А, я вообще перестал отправлять сообщения своим абонентам.

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

:)

я просто авторизатор слегка подправил, чтобы в нем отображался текущий название текущего тарифа и его цена

а по ОнКоннект отправляю специально отформатированное сообщение, которое и обрабатывает авторизатор

Share this post


Link to post
Share on other sites

Итак пробую новую версию.

1. Пробую собрать:

./build
make install-bin

2. Запускаю

root@stg:/install/stg_2.4.07_p1/stg-2.407-p1/projects# stargazer /etc/stargazer/
    eventloop.cpp > 08:27:20 > EVENT_LOOP::Runner - Before start
    eventloop.cpp > 08:27:20 > EVENT_LOOP::Runner - Sleeping until new actions arrived
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_auth_ao.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_auth_ia.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_conf_sg.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_cap_ether.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_ping.so
plugin_runner.cpp > 08:27:20 > PLUGIN_LOADER::Load() - Error loading plugin '/usr/lib/stg/mod_auth_ao.so': '/usr/lib/stg/mod_auth_ao.so: undefined symbol: _ZN5USERS12DelFromIPIdxEj'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_auth_ao.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_auth_ia.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_conf_sg.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_cap_ether.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_ping.so'
   users_impl.cpp > 08:27:20 > USERS::Stop()
         main.cpp > 08:27:21 > KillExecuters pid=18873
    stg_timer.cpp > 08:27:21 > STG_TIMER stopped
 store_loader.cpp > 08:27:21 > STORE_LOADER::Unload()

3. Пересобираю еще раз. И еще раз ставлю. Запустился нормально.НО. Вот лог запуска.

2011-05-23 08:27:21 -- ---------------------------------------------
2011-05-23 08:28:51 -- Stg v. 2.407-p1
2011-05-23 08:28:51 -- Message queue created successfully. msgKey=5555 msgID=294912
2011-05-23 08:28:51 -- Timer thread started successfully.
2011-05-23 08:28:51 -- Storage plugin: file_store v.1.04. Loading successfull.
2011-05-23 08:29:26 -- Users started successfully.
2011-05-23 08:29:26 -- Traffcounter started successfully.
2011-05-23 08:29:26 -- Module: 'Ether_cap v.1.2'. Start successfull.
2011-05-23 08:29:26 -- Module: 'InetAccess authorization plugin v.1.4'. Start successfull.
2011-05-23 08:31:47 -- Module: 'Always Online authorizator v.1.0'. Start successfull.
2011-05-23 08:31:49 -- Module: 'Pinger v.1.01'. Start successfull.
2011-05-23 08:31:49 -- Module: 'Stg configurator v.0.08'. Start successfull.
2011-05-23 08:31:49 -- Stg started successfully.
2011-05-23 08:31:49 -- +++++++++++++++++++++++++++++++++++++++++++++

Посмотрите на время между

2011-05-23 08:29:26 -- Module: 'InetAccess authorization plugin v.1.4'. Start successfull.
2011-05-23 08:31:47 -- Module: 'Always Online authorizator v.1.0'. Start successfull.

Чуть больше 2-х минут.

4. Система :

root@stg:/var/log# uname -a
Linux stg 2.6.32-31-generic #61-Ubuntu SMP Fri Apr 8 18:25:51 UTC 2011 x86_64 GNU/Linux

5. Конфигуратор запустился сразу. А вот клиенты начали подключаться спустя минут 5.

6. Жду.

Share this post


Link to post
Share on other sites

Итак пробую новую версию.

1. Пробую собрать:

./build
make install-bin

2. Запускаю

root@stg:/install/stg_2.4.07_p1/stg-2.407-p1/projects# stargazer /etc/stargazer/
    eventloop.cpp > 08:27:20 > EVENT_LOOP::Runner - Before start
    eventloop.cpp > 08:27:20 > EVENT_LOOP::Runner - Sleeping until new actions arrived
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_auth_ao.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_auth_ia.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_conf_sg.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_cap_ether.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_ping.so
plugin_runner.cpp > 08:27:20 > PLUGIN_LOADER::Load() - Error loading plugin '/usr/lib/stg/mod_auth_ao.so': '/usr/lib/stg/mod_auth_ao.so: undefined symbol: _ZN5USERS12DelFromIPIdxEj'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_auth_ao.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_auth_ia.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_conf_sg.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_cap_ether.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_ping.so'
   users_impl.cpp > 08:27:20 > USERS::Stop()
         main.cpp > 08:27:21 > KillExecuters pid=18873
    stg_timer.cpp > 08:27:21 > STG_TIMER stopped
 store_loader.cpp > 08:27:21 > STORE_LOADER::Unload()

Было бы неплохо глянуть лог сборки.

 

3. Пересобираю еще раз. И еще раз ставлю. Запустился нормально.НО. Вот лог запуска.

2011-05-23 08:27:21 -- ---------------------------------------------
2011-05-23 08:28:51 -- Stg v. 2.407-p1
2011-05-23 08:28:51 -- Message queue created successfully. msgKey=5555 msgID=294912
2011-05-23 08:28:51 -- Timer thread started successfully.
2011-05-23 08:28:51 -- Storage plugin: file_store v.1.04. Loading successfull.
2011-05-23 08:29:26 -- Users started successfully.
2011-05-23 08:29:26 -- Traffcounter started successfully.
2011-05-23 08:29:26 -- Module: 'Ether_cap v.1.2'. Start successfull.
2011-05-23 08:29:26 -- Module: 'InetAccess authorization plugin v.1.4'. Start successfull.
2011-05-23 08:31:47 -- Module: 'Always Online authorizator v.1.0'. Start successfull.
2011-05-23 08:31:49 -- Module: 'Pinger v.1.01'. Start successfull.
2011-05-23 08:31:49 -- Module: 'Stg configurator v.0.08'. Start successfull.
2011-05-23 08:31:49 -- Stg started successfully.
2011-05-23 08:31:49 -- +++++++++++++++++++++++++++++++++++++++++++++

Посмотрите на время между

2011-05-23 08:29:26 -- Module: 'InetAccess authorization plugin v.1.4'. Start successfull.
2011-05-23 08:31:47 -- Module: 'Always Online authorizator v.1.0'. Start successfull.

Чуть больше 2-х минут.

А можно в момент этого 2-минутного простоя выполнить следующие комманды:

# gdb /usr/sbin/stargazer
(gdb) attach <pid-of-stargazer>
(gdb) thread apply all bt
(gdb) quit

и показать что оно напишет? Лучше всего в отладочном режиме и вместо make install-bin раскидать файлы руками.

 

4. Система :

root@stg:/var/log# uname -a
Linux stg 2.6.32-31-generic #61-Ubuntu SMP Fri Apr 8 18:25:51 UTC 2011 x86_64 GNU/Linux

5. Конфигуратор запустился сразу. А вот клиенты начали подключаться спустя минут 5.

А что происходило при попытке подключения в течении этих пяти минут?

Share this post


Link to post
Share on other sites
Было бы неплохо глянуть лог сборки.

Собирал без лога. Но такой вопрос - может дело в этом ? :

Я сначала скачал, сделал билд. А через несколько дней только кильнул СТГ и сделал инсталл-бин. ?

Перезапуск сервера был.

Второй раз снова кильнул стг. Снова билд. и маке инсталл-бин. Все запустилось.

Могло из-за этого не пойти сразу ?

А можно в момент этого 2-минутного простоя выполнить следующие комманды:

К сожалению нет. Запустил в обычном режиме на рабочем сервере.

600 онлайна. Играть с перезапуском небезопастно для здоровья (:

А что происходило при попытке подключения в течении этих пяти минут?

Ничего - просто авторизатор красный. Подключиться - тишина и кнопка снова активна. Минут через 5 подключился.

 

Когда первый раз ставил последний релиз продержался с 8 утра и до 6 вечера.

Потом упал. Перезапуск. Час поработал и снова упал.

Я тогда откатил на старый.

Посмотрим как поведет себя сейчас.

Если упадет (не дай Бог ), то попробую запустить в дебаге.

Share this post


Link to post
Share on other sites
Было бы неплохо глянуть лог сборки.

Собирал без лога. Но такой вопрос - может дело в этом ? :

Я сначала скачал, сделал билд. А через несколько дней только кильнул СТГ и сделал инсталл-бин. ?

Перезапуск сервера был.

Второй раз снова кильнул стг. Снова билд. и маке инсталл-бин. Все запустилось.

Могло из-за этого не пойти сразу ?

...

Нет. Либо по какой-то причине не до конца собралось, либо, опять-же, по неизвестной причине не до конца поставилось.

Share this post


Link to post
Share on other sites

К стати,

Итак пробую новую версию.

1. Пробую собрать:

./build
make install-bin

2. Запускаю

root@stg:/install/stg_2.4.07_p1/stg-2.407-p1/projects# stargazer /etc/stargazer/
    eventloop.cpp > 08:27:20 > EVENT_LOOP::Runner - Before start
    eventloop.cpp > 08:27:20 > EVENT_LOOP::Runner - Sleeping until new actions arrived
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_auth_ao.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_auth_ia.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_conf_sg.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_cap_ether.so
         main.cpp > 08:27:20 > Module: /usr/lib/stg/mod_ping.so
plugin_runner.cpp > 08:27:20 > PLUGIN_LOADER::Load() - Error loading plugin '/usr/lib/stg/mod_auth_ao.so': '/usr/lib/stg/mod_auth_ao.so: undefined symbol: _ZN5USERS12DelFromIPIdxEj'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_auth_ao.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_auth_ia.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_conf_sg.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_cap_ether.so'
         main.cpp > 08:27:20 > Unloading module '/usr/lib/stg/mod_ping.so'
   users_impl.cpp > 08:27:20 > USERS::Stop()
         main.cpp > 08:27:21 > KillExecuters pid=18873
    stg_timer.cpp > 08:27:21 > STG_TIMER stopped
 store_loader.cpp > 08:27:21 > STORE_LOADER::Unload()

...

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

 

И еще. Есть ли какие-либо новости по багу с авторизацией? Все ли работает нормально?

Share this post


Link to post
Share on other sites

Сорри. Немного был занят.

Новый СТГ (а новый ли ? После этого поста уже сомневаюсь (: ) работает без нареканий.

В логах - все та же задержка на 1-2 минуты.

Но работает до сих пор без сбоев. СТГ ребутается по крону в 5.30 утра.

Визуально ключи подключаются быстрее, и быстрее приходят сообщения. Можно попробовать убрать слипы в скриптах ?

Share this post


Link to post
Share on other sites

Сорри. Немного был занят.

Новый СТГ (а новый ли ? После этого поста уже сомневаюсь (: ) работает без нареканий.

В логах - все та же задержка на 1-2 минуты.

Но работает до сих пор без сбоев. СТГ ребутается по крону в 5.30 утра.

Визуально ключи подключаются быстрее, и быстрее приходят сообщения. Можно попробовать убрать слипы в скриптах ?

nightfly у себя в скриптах убрал - говорит, все в порядке.

Значит закрываю баг. Осталось разобраться с задержкой...

Share this post


Link to post
Share on other sites

...

Но работает до сих пор без сбоев. СТГ ребутается по крону в 5.30 утра.

...

К стати, а зачем?

Share this post


Link to post
Share on other sites

В инит скрипте СТГ у меня вот так :

do_start()
{
       # Return
       #   0 if daemon has been started
       #   1 if daemon was already running
       #   2 if daemon could not be started
       start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
               || return 1

       # ps x | grep $DAEMON | grep -v grep | cut -f1 -d" " > $PIDFILE
               /etc/stargazer/scripts/dhcp.sh
               /etc/stargazer/scripts/arp.sh
               /etc/stargazer/firewall.sh start
               /etc/stargazer/ifb.sh start
               /etc/stargazer/add_manual.sh
               /etc/stargazer/scripts/check_stg_bak_files.sh
               /install/sysctl.sh
       start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
               $DAEMON_ARGS \
               || return 2
}

/etc/stargazer/scripts/dhcp.sh - запускается выборка из файлов и формируется база маков, после чего служба рестартуется.

/etc/stargazer/scripts/arp.sh - формируется арп-таблица

/etc/stargazer/firewall.sh start - очистка и установка дефолтного фаера

/etc/stargazer/ifb.sh start - сброс и установка шейперов

/etc/stargazer/add_manual.sh - дополнительные настройки фаера

/etc/stargazer/scripts/check_stg_bak_files.sh - проверяем битые файлы

/install/sysctl.sh - сбрасываем корректировки для ядра

и только потом стартуем СТГ

Почему каждый день рестарт ?

Ну у нас специфический шейпер - он запускается 1 раз и сразу для все юзеров.

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

Утром все стартует по новой , но уже такие юзеры идут в 1 скорости.

И раньше стг бывало падал, поэтому утром контрольный запуск.

Сейчас вроде падений нет, а шейпера еще не переделали.

Share this post


Link to post
Share on other sites

А, вот еще. Каждый день бекапится биллинг :

15 4    * * *   root    /usr/bin/rsync -rltD --delete-after /etc/ 192.168.хх.хх:/mnt/HD_a2/server1_backup/etc
25 4    * * *   root    /usr/bin/rsync -rltD --delete-after /var/stargazer 192.168.хх.хх:/mnt/HD_a2/server1_backup/var

И после такого иногда падает СТГ (пару раз всего правда было, может первые полные когда были).

Рестарт какбэ страхует однозначный запуск.

Share this post


Link to post
Share on other sites

Костыли и подпорки :)

Работает пока без глюков. Пусть будут костыли. Куда ж без них (:

Share this post


Link to post
Share on other sites

...

/etc/stargazer/scripts/check_stg_bak_files.sh - проверяем битые файлы

/install/sysctl.sh - сбрасываем корректировки для ядра

...

Можно убрать. В 2.407 bak-файлов уже нет.

Share this post


Link to post
Share on other sites

Можно убрать. В 2.407 bak-файлов уже нет.

Спасибо убрал. СТГ пока работает без збоев.

Share this post


Link to post
Share on other sites

...

/etc/stargazer/scripts/check_stg_bak_files.sh - проверяем битые файлы

/install/sysctl.sh - сбрасываем корректировки для ядра

...

Можно убрать. В 2.407 bak-файлов уже нет.

Можно узнать почему убрали bak-файлы?

Как-то стрёмно без них. :)

Share this post


Link to post
Share on other sites

tar + rsync (а еще лучше mysqldump+rsync) продолжают спасать отцов русской демократии (С)

Share this post


Link to post
Share on other sites

...

/etc/stargazer/scripts/check_stg_bak_files.sh - проверяем битые файлы

/install/sysctl.sh - сбрасываем корректировки для ядра

...

Можно убрать. В 2.407 bak-файлов уже нет.

Можно узнать почему убрали bak-файлы?

Как-то стрёмно без них. :)

Все просто. Раньше работало так:

  • бекапим старый файл;
  • пишем данные;
  • удаляем бекап.

Теперь работает так:

  • пишем в новый файл;
  • переименовываем в старый.

Операция переименования атомарна с т.з. файловой системы. bak-файлам места не осталось ;)

Share this post


Link to post
Share on other sites

tar + rsync (а еще лучше mysqldump+rsync) продолжают спасать отцов русской демократии (С)

А еще лучше pg_dump и потоковая репликация :)

Share this post


Link to post
Share on other sites

ага, и много развеселых интимных отношений с вакумом :)

Share this post


Link to post
Share on other sites

ага, и много развеселых интимных отношений с вакумом :)

Что? VACUUM?

Начиная с версии 8.0 (смею напомнить, что текущая версия - 9.1) существует такая штука как AutoVacuum, включенная по умолчанию и очень гибко настраиваемая.

Единственно что пришлось дополнить внешними скриптами - это ANALYZE по крону для таблиц tb_detail_stats и tb_sessions_log/tb_sessions_data. Т.к. они write-only то AutoVacuum не выполняет для них ANALYZE и со временем статистика для планировщика запросов будет ухудшаться.

Ну еще поддержка секционирования, но если детальную статистику не писать или часто удалять то она не нужна.

 

Вообще говоря, из трех СУБД (Firebird, MySQL и PostgreSQL) с которыми мне приходилось (и приходится) тесно работать PostgreSQL самый простой, прямой и очевидный.

Share this post


Link to post
Share on other sites
PostgreSQL самый простой, прямой и очевидный.

Oo

Share this post


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.

×