relikts
|
|
« Ответ #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
|
|
« Ответ #151 : 05 Декабря 2020, 18:10:06 » |
|
Если вы модифицировали noserver.pl, то его надо целиком смотреть
|
|
|
Записан
|
|
|
|
relikts
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #154 : 08 Декабря 2020, 09:27:18 » |
|
Первый запрос порядка 4 сек. строк 4400
второй порядка 0,002 сек
третий 0,03 сек
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #155 : 08 Декабря 2020, 20:46:47 » |
|
count(*) мновенно выполняется, спасибо, мы получили подтверждение этому известному факту. Результат выполнения какой?
|
|
|
Записан
|
|
|
|
relikts
|
|
« Ответ #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
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #157 : 09 Декабря 2020, 11:40:47 » |
|
Максим предлагал увеличить кэш инно дб до 19G - не помогло.
Мы нашли в нете реккомендации по увеличению максимального размера пакета в мускуле до 256 мб - не помогло.
по тюнингу мускула: pkg install mysqltuner mysqltuner --user root --pass parolbd --color
это ж сколько у вас абонов, если кэш инно дб до 19G, или чистку не проводите вообще?
|
|
|
Записан
|
|
|
|
relikts
|
|
« Ответ #158 : 09 Декабря 2020, 11:53:11 » |
|
Абонов не много около 5000... муэскьюэльтюнер запускаю периодически... иннодб и в дефолте работает нормально во всем кроме СОА это продавец билинга реккомендовал увеличить до 19 гиг, мы попробовали - не помогло, убрали назад. Только с СОА проблемы, и найти не можем уже 3 дня.
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #159 : 09 Декабря 2020, 20:53:51 » |
|
|
|
|
Записан
|
|
|
|
relikts
|
|
« Ответ #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
|
|
« Ответ #161 : 10 Декабря 2020, 00:11:01 » |
|
Ну, по тем данным, что выдали sql, там объемы данных совсем понты. Даже речи не должно идти о нехватке памяти. Тут что-то другое. И вот я подумал, что memory corruption если подумать говорит не о том, что памяти не хватило. Есть немного неожиданный совет - уменьшь память до 16 гигов. Хз, может для системы/железа это нетипично большой объем и где-то происходит ошибка из-за этого
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #162 : 10 Декабря 2020, 02:06:29 » |
|
Не могу грузить файлы почему то , спасиб за конфиги, попробую загрузи на https://radikal.ru/ и вывод целиком вставь в сообщение желательно с phpmyadmin, а то вообще не читабельно Я тоже против опции 82 но настаивает руководство из за того что пользователи не раз вскрывали ящики и переставляли порты в коммутаторе. я не про отказ от опции а про метод обновления параметров абона на джуне а на счет памяти мускула, мне видится, тебе там и 4гига с головой хватит
|
|
|
Записан
|
|
|
|
Warlock
NoDeny
Старожил
Карма: 8
Offline
Сообщений: 367
|
|
« Ответ #163 : 12 Мая 2021, 08:35:51 » |
|
кто-то у себя уже реализовал вытаскивать список пользователей по ssh/telnet?
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #164 : 12 Мая 2021, 20:13:11 » |
|
кто-то у себя уже реализовал вытаскивать список пользователей по ssh/telnet?
я сессии вытягивал по ссш для поддержания авторизации, а то аккаунтинг как-то вообще не але - 10 минут, никуда не годится.
|
|
|
Записан
|
|
|
|
|