Перейти до

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

Опубліковано:

вот самое начало месяца

2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'shmel': 'tariff' parameter changed from 'lightU2' to 'fullU1'.
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'lerm2': 'tariff' parameter changed from 'lightU0' to 'lightU2'.
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'boroda': 'tariff' parameter changed from 'vipU4000' to 'lightU3'.
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'ali': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'wws': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'vpntest': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'vpnroot': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'vpnboroda': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'vov4ik': 'freeMb' parameter changed from '50.000000' to '50.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'trener': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'test': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'tarasss': 'freeMb' parameter changed from '50.000000' to '50.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'stulov': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'stepa': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'solariz': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'shmel': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'sergey': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'serega': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- purestg2: User qwest (socket=15) is disconnected.
2011-04-01 00:03:28 -- Broken pipe!

ниже логи я уже привёл

с 00:03:29 по 00:03:33 биллинг отработал начисление абонплаты

как то подозрительно он замер на 3:28 минуты

как будет запланировано включу дебаг

 

orlova_ya до сих пор в онлайне :)

Опубліковано:

вот самое начало месяца

2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'stepa': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'solariz': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'shmel': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'sergey': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'serega': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- purestg2: User qwest (socket=15) is disconnected.
2011-04-01 00:03:28 -- Broken pipe!

ниже логи я уже привёл

с 00:03:29 по 00:03:33 биллинг отработал начисление абонплаты

как то подозрительно он замер на 3:28 минуты

 

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

 

Другое дело, это не объясняет, почему именно orlova_ya осталась онлайн, а остальные нет?

 

Возможно, именно так, с "замиранием" происходят "залипания авторизации", о которых говорил madf.

Опубліковано:

...

 

Теперь моя гипотеза:

Пока старгейзер занят обработкой события "новый месяц" (сброс трафика, снятие абонки и прочее), он держит какую-то блокировку (mutex), которая нужна purestg2 для ответа на запросы от pppd/pptp.

Авторизатор purestg2 крутится в отдельном потоке и использует для своей работы следующие функции:

USERS::FindByName()

USER::GetAuthorized()

USER::IsAuthorizedBy()

USER::Unauthorize()

USER::Authorize()

USER::IsInetable()

а также доступ к некоторым свойствам USER::property.

madf, что ты думаешь об этом?

 

...

 

USERS::FindByName() - блокирующая;

USER::GetAuthorized() - не блокирующая;

USER::IsAuthorizedBy() - блокирующая;

USER::Unauthorize() - блокирующая;

USER::Authorize() - блокирующая;

USER::IsInetable() - не блокирующая.

 

USER::property при доступе блокируется только на очень короткий срок - они не связанны с мьютексом класса USER.

 

В целом - вполне вероятно. Отладочный лог покажет что происходит в этот момент.

Опубліковано:

вот самое начало месяца

2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'stepa': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:00:00 -- Admin '@stargazer', 0.0.0.0: User 'solariz': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'shmel': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'sergey': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- Admin '@stargazer', 0.0.0.0: User 'serega': 'freeMb' parameter changed from '0.000000' to '0.000000'. Prepaid traffic
2011-04-01 00:03:28 -- purestg2: User qwest (socket=15) is disconnected.
2011-04-01 00:03:28 -- Broken pipe!

ниже логи я уже привёл

с 00:03:29 по 00:03:33 биллинг отработал начисление абонплаты

как то подозрительно он замер на 3:28 минуты

 

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

 

Другое дело, это не объясняет, почему именно orlova_ya осталась онлайн, а остальные нет?

 

Возможно, именно так, с "замиранием" происходят "залипания авторизации", о которых говорил madf.

 

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

"Залипания" у нас происходили не на границе месяца а при смене IP. Не думаю что с этим связанно. Хотя всякое может быть, я пока так и не нашел откуда такая проблема вылазит. Сейчас посмотрю что еще может происходить при пересечении границы месяца такого что может затормозить начисление предоплаченного трафика. Заодно подниму свои логи, поищу похожие эффекты.

Опубліковано:

Поднял логи за последний переход между месяцами - ни на одном из трех серверов задержек не обнаружил.

Опубліковано:

Итак. Готовится релиз purestg 2.2 с кодовым названием "Proper disconnects"/"Правильное отключение" ;)

 

Новое:

  • Если пользователя отключил старгейзер (кончились деньги или ещё что-то), то плагин тут же разрывает pppd соединение. Раньше это происходило через keepalivetimeout секунд.
  • "Сторожевые таймеры" для пользователей. Если для какого-то пользователя вовремя не пришел PING пакет от pppd, то пользователь насильно отключается. Должно помочь в случае непредвиденного зависания онлайна как у товарища yKponа.
  • Корректная отработка ситуации, если pppd упал или завершился по SIGKILL.

 

Изменения уже в git.

 

Релиз планируется сразу после выпуска Stargazer-2.407-rc3.

Опубліковано:

под rc3 purestg2-2.1 не собирается, сначало ругается на отсутствие некоторых хеадеров, stg_common.h и stg_logger.h взял из rc2, помогло, но в итоге заткнулся на base_auth.h, он не подходит

Опубліковано:

под rc3 purestg2-2.1 не собирается, сначало ругается на отсутствие некоторых хеадеров, stg_common.h и stg_logger.h взял из rc2, помогло, но в итоге заткнулся на base_auth.h, он не подходит

На отсутствие каких хидеров ругается?

Опубліковано:

Согласно анонсу выпущен purestg 2.2: http://code.google.com/p/purestg2/downloads/detail?name=purestg2-2.2.tar.gz

 

Эта версия совместима с Stargazer-2.407-rc3.

 

Начиная с rc3, если вы устанавливаете Stargazer в систему методом `make install`, все заголовочные файлы старгейзера, необходимые для сборки purestg2, автоматически устанавливаются в /usr/include/stg. Поэтому команда для сборки purestg2 теперь выглядит просто:

$ ./configure --prefix=/usr
$ make
# make install

--prefix разумеется можно исправить по собственному желанию.

 

Старый способ с использованием --with-stg-headers также поддерживается.

 

Нововведения перечислены несколькими сообщениями выше.

  • 2 weeks later...
Опубліковано:

заметил вот такую вещь, предполагаю это как то связано с предыдущими моими постами:

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

Опубліковано:

Алексей подскажи что означает purestg2: ERROR: checkUserTimeouts failed? сыпется каждую секунду в логи стг, а то собрал машинку для тестов

Опубліковано:

Алексей подскажи что означает purestg2: ERROR: checkUserTimeouts failed? сыпется каждую секунду в логи стг, а то собрал машинку для тестов

Если при этом больше ошибок нет, то это детская опечтка у меня в коде. :)

 

В git поправил.

 

Патч:

diff --git a/stargazer/purestg2.cpp b/stargazer/purestg2.cpp
index cd760f6..71bc0f7 100644
--- a/stargazer/purestg2.cpp
+++ b/stargazer/purestg2.cpp
@@ -958,6 +958,8 @@ int AUTH_PURESTG2::checkUserTimeouts()
                WriteServLog("purestg2: BUG: Can't find socket for user \"%s\"", user->GetLogin().c_str());
        }
    }
+
+    return 0;
}
//-----------------------------------------------------------------------------
int AUTH_PURESTG2::checkStgDisconnects()

Опубліковано:

заметил не всегда происходит запись ipparamsave

В каких случаях не происходит?

Хотелось бы увидеть соответствующие отладочные (опция debug) логи pppd и stg при таких случаях.

Опубліковано:

stg работает не в дебаге, так что в логах инфы по существу никакой, заметил вот что опишу подробно:

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

цепляемся к базе напрямую (у меня HeidiSQL), а там это поле пустое...

добавляю в учётку ещё один адрес с которого можно цепляться, цепляюсь успешно, отключаюсь, опять смотрю базу а там ip адрес от предыдущего коннекта

 

как будто стг забывает записать в базу и держит в себе, а потом путает

Опубліковано:

stg работает не в дебаге, так что в логах инфы по существу никакой,

stg может работать и не в дебаге. Нужно только, чтобы в настройках модуля purestg2 присутствовал параметр debug (без значения, просто одно слово - debug).

 

заметил вот что опишу подробно:

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

цепляемся к базе напрямую (у меня HeidiSQL), а там это поле пустое...

Очевидно старгейзер не сразу скидывает данные в базу.

 

А что это за база такая? Не видел её среди поддерживаемых в stg.

Опубліковано:

А что это за база такая? Не видел её среди поддерживаемых в stg.

HeidiSQL - это виндовый GUI клиент к MySQL :)

 

Очевидно старгейзер не сразу скидывает данные в базу.

почему тогда он скидывает адрес предыдущего соединения?

 

секция purestg сейчас работает без дебага, так что до следующего запуска ждём

Опубліковано:

Очевидно старгейзер не сразу скидывает данные в базу.

почему тогда он скидывает адрес предыдущего соединения?

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

1) При истечении срока действия кредита (user_impl.cpp:1089).

2) При изменении тарифа пользователя (user_impl.cpp:615).

3) При добавлении нового пользователя (users_impl.cpp:169).

4) При остановке старгейзера (users_impl.cpp:503).

5) При изменении данных пользователя через конфигуратор.

 

Тогда получается, что адрес предыдущего соединения был вписан в базу в тот момент, когда ты "добавил в учётку ещё один адрес с которого можно цепляться" (подпадает под пункт 5).

 

секция purestg сейчас работает без дебага, так что до следующего запуска ждём

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

Опубліковано:

Тогда получается, что адрес предыдущего соединения был вписан в базу в тот момент, когда ты "добавил в учётку ещё один адрес с которого можно цепляться" (подпадает под пункт 5).

да действительно, перезапись произходит при изменении любого параметра

 

но если подумать, изменение userdata3 (в моём случае) это и есть изменение одного из параметров, но скорее всего дело в том что меняет не конфигуратор

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

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

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

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

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

Вхід

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

Войти сейчас
  • Зараз на сторінці   0 користувачів

    • Немає користувачів, що переглядають цю сторінку.
×
×
  • Створити нове...