Страница 1 из 1
rlm_perl threaded support
Добавлено: Пн май 20, 2013 8:37 am
snooppy
Интересует поддержка Threaded Perl в abills.
Ситуация следующая, в момент одновременных подключений, 1 числа месяца или после аварий когда клиенты подключаются большим количеством в единицу времени не выдерживает радиус аккаунтинг. В лог пишет следующее
Код: Выделить всё
Error: Discarding duplicate request from client pptp2 port 35157 - ID: 205 due to unfinished request 7086426
И так постоянно, при этом возникает большое количество ZAP. После когда радиус не успевает обработать 3 раза (По конфигу) Alive пакетов сессии пропадают с билинга, но на NAS(е) остаются, в дальнейшем происходит плохая ситуация.
Сервер на Gentoo, при вводе в консоли perl -V | grep USE_ITHREADS, тишина. Если я соберу перл с поддержкой USE_ITHREADS то производительность радиус возрастёт? И какие еще есть выходы из данной ситуации? Alive (sec.): при увеличении не поможет. Стоит 300.
Re: rlm_perl threaded support
Добавлено: Пн май 20, 2013 9:04 am
~AsmodeuS~
пересобрать перл с потоками
Re: rlm_perl threaded support
Добавлено: Пн май 20, 2013 9:05 am
snooppy
~AsmodeuS~ писал(а):пересобрать перл с потоками
Спасибо. Это я и хотел услышать.
В дальнейшем я смогу использовать в modules/perl?
Код: Выделить всё
max_clones =32 # Максимально возможное количество процессов.
start_clones = 32 # Кколичество первоначально запущенных процессов.
# Динамическая регулировка количества процессов.
min_spare_clones =0
max_spare_clones = 32
cleanup_delay = 5
max_request_per_clone = 0
Re: rlm_perl threaded support
Добавлено: Вт май 21, 2013 1:05 am
snooppy
Пересобрал perl с поддержкой ithreads
Код: Выделить всё
billing ~ # perl -V | grep USE_I
USE_64_BIT_INTUSE_ITHREADS USE_LARGE_FILES
После пришлось пересобрать freeradius2.
Результат прежний.
Код: Выделить всё
Tue May 21 03:34:20 2013 : Error: Discarding duplicate request from client pptp3 port 55203 - ID: 72 due to unfinished request 183
Tue May 21 03:37:24 2013 : Error: Discarding duplicate request from client pptp1 port 33220 - ID: 29 due to unfinished request 1901
Tue May 21 03:37:35 2013 : Error: Discarding duplicate request from client pptp3 port 35831 - ID: 95 due to unfinished request 2014
Tue May 21 03:38:08 2013 : Error: Discarding duplicate request from client pptp1 port 54736 - ID: 96 due to unfinished request 2244
Tue May 21 03:42:00 2013 : Error: Discarding duplicate request from client pptp1 port 58810 - ID: 64 due to unfinished request 4809
Tue May 21 03:46:22 2013 : Error: Discarding duplicate request from client pptp2 port 42214 - ID: 218 due to unfinished request 781
billing ~ # cat /etc/raddb/radiusd.conf
Код: Выделить всё
prefix = /usr
exec_prefix = ${prefix}
sysconfdir = /etc
localstatedir = /var/lib
sbindir = ${exec_prefix}/sbin
logdir = /var/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
name = radiusd
confdir = ${raddbdir}
run_dir =/var/run/radiusd
db_dir = ${raddbdir}
libdir = /usr/lib64/freeradius
pidfile = ${run_dir}/${name}.pid
user = radiusd
group = radiusd
max_request_time = 30
cleanup_delay = 5
max_requests = 3840000
#debug_level = 1
listen {
type = auth
ipaddr = *
port = 0
}
listen {
ipaddr = *
port = 0
type = acct
}
hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions = yes
log {
destination = files
file = ${logdir}/radius.log
syslog_facility = daemon
stripped_names = no
auth = no
auth_badpass = no
auth_goodpass = no
}
checkrad = ${sbindir}/checkrad
security {
max_attributes = 200
reject_delay = 1
status_server = yes
}
proxy_requests = no
$INCLUDE clients.conf
thread pool {
start_servers = 32
max_servers = 32
min_spare_servers = 3
max_spare_servers = 10
max_requests_per_server = 0
}
modules {
$INCLUDE ${confdir}/modules/
}
instantiate {
exec
expiration
logintime
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/default
billing ~ # cat /etc/raddb/modules/perl
Код: Выделить всё
perl {
module = /usr/abills/libexec/rlm_perl.pl
func_authorize = authorize
func_accounting = accounting
func_authenticate = authenticate
func_preacct = preacct
func_checksimul = checksimul
func_xlat = xlat
max_clones = 32
start_clones = 32
min_spare_clones = 0
max_spare_clones = 32
cleanup_delay = 5
max_request_per_clone = 0
}
Вопрос: Как сделать радиус производительнее, хотя бы 500 acct ответов в секунду? Может mysql не справляется?
Re: rlm_perl threaded support
Добавлено: Ср май 29, 2013 8:12 am
mike62
Когда радиус пишет ошибки discarding посмотрите, не висят ли какие-то запросы в БД?