Биллинговая система Nodeny
28 Марта 2024, 16:26:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 9 10 [11] 12
  Печать  
Автор Тема: Связка Juniper MX80 и Nodeny Plus  (Прочитано 63353 раз)
relikts
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 30


Просмотр профиля Email
« Ответ #150 : 05 Декабря 2020, 15:12:27 »

Здравствуйте доделываем связку джунипера и нодени столкнулись с проблемой в модуле СОА

Зависает noserver.pl  намертво, подозреваю  где то не указали переменную или ошибка в программе.

были проблемы с тяжелым запросом... поставили но кэш - заработал
SELECT SQL_NO_CACHE uid, MAX(service_id) AS sid FROM v_services WHERE tags LIKE '%,inet,%' GROUP BY uid

Уважаемые программисты Нодени + помогите пожалуйста  я поставил вывод переменных в консоль, одна из них равна нулю... а на ноль делить нельзя - у меня памяти для ответа не хватит :-)))

 my $n = $max_ipn{$uid} - $min_ipn{$uid};
print "N-".$n."\n";

        my $mask = $masks{$n} or next;

и вот эта $n все время ноль потому что $max_ipn{$uid} и  $min_ipn{$uid} получаются одинаковыми.

зависает программа на этом месте

в районе кода

 my ($res, $ipn1, $ipn2, $mask) = nod::util::check_is_it_net($ip1, $ip2);

        $res or next;

        $M->{users}{$uid}{net_ips} = $ip1.'/'.$mask;


Что мы делаем не так?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #151 : 05 Декабря 2020, 18:10:06 »

 Если вы модифицировали noserver.pl, то его надо целиком смотреть
Записан
relikts
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 30


Просмотр профиля Email
« Ответ #152 : 07 Декабря 2020, 08:40:12 »

Ничего не модифицировали, кроме как поставили вывод меток чтобы понять где зависает и SQL_NO_CACHE в запросе.  Попробовали уже для оного пользователя вот такую строку запуска
/usr/bin/perl /usr/local/nodeny/noserver.pl -vv -g=coa.cfg.pm -u=5288

замирает на
SELECT SQL_NO_CACHE uid, MAX(service_id) AS sid FROM v_services WHERE tags LIKE '%,inet,%' GROUP BY uid
Строк: 4495. Время выполнения sql: 0.0187 сек

[1.226527: noserver.pl(137) tasks.pm::run(70) tasks.pm(70) noserver.pl::__ANON__(112) noserver.pl::load_usr_info(201) Db.pm::sql(133) Db.pm::sql(320)]
SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties, INET_ATON(a.ip) AS ipn FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.id=5288 AND u.state='on'



если убрать из запроса но кэш то
 SELECT uid, param, tags, service_id FROM v_services WHERE tags LIKE '%,speed,%'

[1.110164: noserver.pl(137) tasks.pm::run(70) tasks.pm(70) noserver.pl::__ANON__(112) noserver.pl::load_usr_info(191) Db.pm::sql(114) Db.pm::connect(94)]
Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_timeout=5 : 0.001485 sec

*** Error in `/usr/bin/perl': malloc(): memory corruption: 0x00000000026101b0 ***
[10]+  Killed                  /usr/bin/perl /usr/local/nodeny/noserver.pl -vv -g=coa.cfg.pm -u=5288


Строк: 0. Время выполнения sql: 0.0682 сек

может какие то особенные настройки мускула нужны, или особые настройки пользователя под которым запускается СОА пробовали ставить размер пакета в мускуле 256 мб, не помогло, памяти валом 20 гиг из них занято 2, буфера мусами в мускуле  пробовали ставить 19 гиг - не помогло, уже голову сломали...

При чем отдельно в админнере эти запросы выполняются нормально.

Машина на дебиане 8  ,   perl v5.20.2

запущены процессы биллинга паралельно

root      3135  0.9  0.0 146572 20232 ?        S    Dec02  66:44 /usr/bin/perl /usr/local/nodeny/nokernel.pl -d
root      3136  3.3  0.7 293292 175164 ?       S    Dec02 235:54 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -d
root      3137 17.9  1.2 404164 316080 ?       Sl   Dec02 1262:37 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=collectors -d
root     23317  0.1  0.6 286112 167972 pts/3   S    Dec04   4:59 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_uslugi -d
root     23334  0.0  0.6 284700 166660 pts/3   S    Dec04   4:28 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_ip -d
root     23346  0.0  0.6 283956 165912 pts/3   S    Dec04   4:16 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_ip_sorm2 -d
root     23358  0.0  0.6 283636 165720 pts/3   S    Dec04   4:26 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_pays -d
root     23364  0.0  0.7 311160 191632 pts/3   S    Dec04   4:22 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos -d
root     23858  0.0  0.0 133860 15828 pts/4    T    09:28   0:00 /usr/bin/perl /usr/local/nodeny/noserver.pl -vv -g=coa.cfg.pm -u=5288
нижний - висит


и ничего не происходит...  Подскажите плиз что делать? Может посмотрите?
« Последнее редактирование: 07 Декабря 2020, 09:12:48 от relikts » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #153 : 08 Декабря 2020, 00:22:09 »

Если в mysql консоли выполнить:
Код:
SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties, INET_ATON(a.ip) AS ipn FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.id=5288 AND u.state='on'
1) сколько времени он выполняется?
2) сколько строк в результате?
в конце должна быть статистика по обоим параметрам

И такой запрос:
Код:
SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now

И еще:

Код:
SELECT count(*) from auth_now;
Записан
relikts
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 30


Просмотр профиля Email
« Ответ #154 : 08 Декабря 2020, 09:27:18 »

Первый запрос порядка 4 сек. строк 4400

второй порядка 0,002 сек

третий 0,03 сек
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #155 : 08 Декабря 2020, 20:46:47 »

count(*) мновенно выполняется, спасибо, мы получили подтверждение этому известному факту. Результат выполнения какой?
Записан
relikts
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 30


Просмотр профиля Email
« Ответ #156 : 09 Декабря 2020, 09:11:02 »

SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties, INET_ATON(a.ip) AS ipn FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.id=5288 AND u.state='on
но это для одного пользователя
+------+---------+------+-------+------------+--------------+------------+------------+
| id   | balance | name | state | auth_start | ip           | properties | ipn        |
+------+---------+------+-------+------------+--------------+------------+------------+
| 5288 |    0.00 | 5288 | on    | 1607414027 | 100.64.0.212 |            | 1681916116 |
+------+---------+------+-------+------------+--------------+------------+------------+
1 row in set (0.21 sec)

а вот для всех 4442 rows in set (3.22 sec)



SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now

5 189 строк (0.091 s)


mysql> SELECT count(*) from auth_now;
+----------+
| count(*) |
+----------+
|      198 |
+----------+
1 row in set (0.00 sec)
У нас отключена авторизация эти 198 якобы авторизованных это остаток после глюка когда нодени затирал мак адреса. На данный момент авторизация работает только в СОА.... там пока один юзер с ид 5288.

Но даже если запускать скрипт noserver  с одним пользователем все равно вываливается с ошибкой памяти
/usr/bin/perl  /usr/local/nodeny/noserver.pl -g=coa.cfg.pm -u=5288 -v

вот запрос перед ошибкой
SELECT uid, param, tags, service_id FROM v_services WHERE tags LIKE '%,speed,%'
Строк: 4526. Время выполнения sql: 0.0194 сек

*** Error in `/usr/bin/perl': malloc(): memory corruption: 0x00000000025b3200 ***

как временное решение нашли выход переименовать 3 процедуры в файле noserver  (load_usr_info  load_usr_traf  load_nets в load_usr_info_t  load_usr_traf_t  load_nets_t) и поставить SQL_NO_CACHE в 2 запросах.  Но это неправильно.

Максим предлагал увеличить кэш инно дб до 19G - не помогло.

Мы нашли в нете реккомендации по увеличению максимального размера пакета в мускуле до 256 мб - не помогло.

Памяти весь биллинг ест около 2 гиг оперативки из 20 , память протестили - без ошибок... Что еще можно сделать стобы запустить noserver без правок, такое впечатление что процедуры load_usr_info  load_usr_traf  load_nets где то пересекаются с другими частями программы, или в них есть противоречивые данные или запросы к БД не закрываются.

Возможно это из за того что работают


root      3135  0.9  0.1 181712 32568 ?        S    Dec02  91:55 /usr/bin/perl /usr/local/nodeny/nokernel.pl -d
root      3136  3.3  0.7 292604 174276 ?       S    Dec02 332:50 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -d
root      3137 17.8  1.2 405192 319252 ?       Sl   Dec02 1779:41 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=collectors -d
root     23317  0.1  0.6 286176 167988 pts/3   S    Dec04   7:51 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_uslugi -d
root     23334  0.0  0.6 285368 167248 pts/3   S    Dec04   7:08 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_ip -d
root     23346  0.0  0.6 284428 166220 pts/3   S    Dec04   6:47 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_ip_sorm2 -d
root     23358  0.0  0.6 283940 166024 pts/3   S    Dec04   7:03 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos_pays -d
root     23364  0.0  0.7 311160 191640 pts/3   S    Dec04   6:59 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -g=make_config_amos -d

но там нет таких процедур я проверил очень внимательно. 

Что еще можно сделать, не хочется с правками носервер запускать?
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 547


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #157 : 09 Декабря 2020, 11:40:47 »

Максим предлагал увеличить кэш инно дб до 19G - не помогло.

Мы нашли в нете реккомендации по увеличению максимального размера пакета в мускуле до 256 мб - не помогло.

по тюнингу мускула:
Код:
pkg install mysqltuner
 mysqltuner --user root --pass parolbd --color
это ж сколько у вас абонов, если кэш инно дб до 19G, или чистку не проводите вообще?
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
relikts
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 30


Просмотр профиля Email
« Ответ #158 : 09 Декабря 2020, 11:53:11 »

Абонов не много около 5000... муэскьюэльтюнер запускаю периодически... иннодб и в дефолте работает нормально во всем кроме СОА это продавец билинга реккомендовал увеличить до 19 гиг, мы попробовали - не помогло, убрали назад. Только с СОА проблемы, и найти не можем уже 3 дня.
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 547


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #159 : 09 Декабря 2020, 20:53:51 »

1) настройки мускула иннодб настраиваются сугубо под потребности и зависят от потребления и нагрузок, ставить с запасом в 2 раза, уже считается переизбытком, покаж размеры больших таблиц
2) авторизация абонов пппое или дхцп, если используете дхцп, то от СоА можно вообще отказаться, атрибут дхцп на джуне  "set system services dhcp-local-server group cvlan reauthenticate lease-renewal" но только на определенных прошивках (у меня mx960 version 20.2R1-S2.1;)
https://www.juniper.net/documentation/en_US/junos/topics/reference/configuration-statement/system-services-dhcp-local-server-reauthenticate.html









Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
relikts
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 30


Просмотр профиля Email
« Ответ #160 : 09 Декабря 2020, 23:50:37 »

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

Я тоже против опции 82 но настаивает руководство из за того что пользователи не раз вскрывали ящики и переставляли порты в коммутаторе.

вот все таблицы, только таблица pays и 2 таблицы с трафиком большие - остальные не очень.
Табл   Тип табл  Режим сопост     Объём данных?   Объём индекс Своб место? Авто приращ?   Строк?   Комментарий?
          admin   InnoDB   utf8_general_ci   16 384   16 384   0   45   ~ 34   
   auth_log   InnoDB   utf8_general_ci   16 384   49 152   0   1   0   
   auth_now   InnoDB   utf8_general_ci   16 384   49 152   0   22 234   ~ 198   
   cards   InnoDB   utf8_general_ci   65 536   32 768   0   501   ~ 500   
   changes   InnoDB   utf8_general_ci   2 637 824   212 992   2 097 152   3 533   ~ 3 545   
   config   MyISAM   utf8_general_ci   315 956   2 048   0   76   75   
   data0   InnoDB   utf8_general_ci   1 589 248   3 751 936   2 097 152   6 404   ~ 5 239   
   datasetup   MyISAM   utf8_general_ci   3 864   5 120   0   31   30   
   dictionary   InnoDB   utf8_general_ci   16 384   32 768   0   189   ~ 163   
   documents   InnoDB   utf8_general_ci   16 384   16 384   0   1   0   
   dopdata   Представление   ?   
   dopfields   InnoDB   cp1251_general_ci   16 384   32 768   0   34   ~ 28   
   dopvalues   InnoDB   cp1251_general_ci   18 366 464   11 567 104   4 194 304   372 284   ~ 346 859   
   fullusers   Представление   ?   
   ip_mac   InnoDB   utf8_general_ci   16 384   16 384   0      0   
   ip_pool   InnoDB   utf8_general_ci   1 589 248   2 326 528   2 097 152   27 182   ~ 27 430   
   links   InnoDB   utf8_unicode_ci   16 384   0   0   1   0   
   mac_uid   InnoDB   utf8_general_ci   360 448   524 288   0   5 672   ~ 5 173   
   nets   InnoDB   utf8_general_ci   16 384   0   0   3   ~ 1   
   notifications   InnoDB   utf8_general_ci   16 384   49 152   0   173   ~ 172   
   notifications_users   InnoDB   utf8_general_ci   16 384   49 152   0   1   0   
   pays   InnoDB   utf8_general_ci   84 492 288   17 350 656   2 097 152   998 521   ~ 338 850   
   pkt_to_srv   InnoDB   utf8_unicode_ci   196 608   0   0      ~ 3 836   
   places   InnoDB   utf8_general_ci   16 384   0   0   1   0   
   places_events   InnoDB   utf8_general_ci   16 384   81 920   0   1   0   
   ports   InnoDB   utf8_general_ci   16 384   16 384   0   1   0   
   p_country   InnoDB   cp1251_general_ci   16 384   0   0   2   ~ 1   
   p_filial   InnoDB   cp1251_general_ci   16 384   0   0   2   ~ 1   
   p_offices   InnoDB   cp1251_general_ci   16 384   0   0   3   ~ 2   
   p_okrug   InnoDB   cp1251_general_ci   16 384   0   0   3   ~ 2   
   p_region   InnoDB   cp1251_general_ci   16 384   0   0   2   ~ 1   
   p_town   InnoDB   cp1251_general_ci   16 384   0   0   19   ~ 18   
   services   InnoDB   utf8_general_ci   65 536   0   0   127   ~ 83   
   ses_traf   MyISAM   utf8_unicode_ci   0   1 024   0   1   0   
   smsru   InnoDB   utf8_general_ci   1 589 248   1 064 960   2 097 152   6 972   ~ 6 927   
   tickets   InnoDB   utf8_general_ci   16 384   196 608   0   1   0   
   traflost   MyISAM   utf8_general_ci   0   1 024   0      0   
   users   InnoDB   utf8_general_ci   1 589 248   81 920   2 097 152      ~ 4 972   
   users_services   InnoDB   utf8_general_ci   1 589 248   524 288   2 097 152   103 157   ~ 5 159   
   users_trf   InnoDB   utf8_general_ci   1 589 248   81 920   2 097 152      ~ 4 819   
   user_grp   InnoDB   utf8_general_ci   16 384   0   0   30   ~ 24   
   v_auth_now   Представление   ?   
   v_ips   Представление   ?   
   v_opt82   Представление   ?   
   v_services   Представление   ?   
   websessions   MyISAM   utf8_general_ci   0   4 096   0      0   
   webses_data   InnoDB   utf8_general_ci   16 384   49 152   0      ~ 6   
   X2020_2_19   MyISAM   utf8_unicode_ci   68 683 862   56 334 336   0      2 641 687   
   X2020_2_20   MyISAM   utf8_unicode_ci   36 625 758   30 100 480   0      1 408 683   
   
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #161 : 10 Декабря 2020, 00:11:01 »

Ну, по тем данным, что выдали sql, там объемы данных совсем понты. Даже речи не должно идти о нехватке памяти. Тут что-то другое. И вот я подумал, что memory corruption  если подумать говорит не о том, что памяти не хватило. Есть немного неожиданный совет - уменьшь память до 16 гигов. Хз, может для системы/железа это нетипично большой объем и где-то происходит ошибка из-за этого
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 547


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #162 : 10 Декабря 2020, 02:06:29 »

Цитировать
Не могу грузить файлы почему то , спасиб за конфиги, попробую
загрузи на https://radikal.ru/ и вывод целиком вставь в сообщение
желательно с phpmyadmin, а то вообще не читабельно

Цитировать
Я тоже против опции 82 но настаивает руководство из за того что пользователи не раз вскрывали ящики и переставляли порты в коммутаторе.

я не про отказ от опции а про метод обновления параметров абона на джуне

а на счет памяти мускула, мне видится, тебе там и 4гига с головой хватит
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
Warlock
NoDeny
Старожил
*

Карма: 8
Offline Offline

Сообщений: 377


Просмотр профиля
« Ответ #163 : 12 Мая 2021, 08:35:51 »

кто-то у себя уже реализовал вытаскивать список пользователей по ssh/telnet?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1444



Просмотр профиля
« Ответ #164 : 12 Мая 2021, 20:13:11 »

кто-то у себя уже реализовал вытаскивать список пользователей по ssh/telnet?
я сессии вытягивал по ссш для поддержания авторизации, а то аккаунтинг как-то вообще не але - 10 минут, никуда не годится.
Записан
Страниц: 1 ... 9 10 [11] 12
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!