Мы используем FreeRADIUS с базой данных MySQL для аутентификации пользователей. Мы столкнулись с проблемой, когда база данных MySQL работала медленно, что приводило к достижению максимального количества потоков. Проблема заключается в том, что когда сервер не может ответить на запросы из-за отсутствия доступных потоков, он отправляет клиентам ответ Access-Reject.
Наши устройства кэшируют клиентские подключения и периодически проверяют с сервером, следует ли их разрешить, или удалить их. Оборудование спроектировано так, что, если нет ответа от сервера и подключен клиент, он останется подключенным. Проблема в том, что когда сервер radius находится на максимальном количестве потоков, его ответ по умолчанию - отправить отказ в доступе (проверяется с помощью захвата пакетов), однако мы хотели бы изменить поведение по умолчанию, чтобы просто игнорировать запрос (сохраняя подключенные клиенты) .
На данный момент мы исправили проблему с базой данных MySQL, но я хотел бы изменить значение по умолчанию с Access-Reject, чтобы просто игнорировать клиентское altogeather. Я провел исследование, но не смог найти ответа на вопрос.
Заранее спасибо.
Убедитесь, что ваш сервер MySQL отвечает достаточно быстро, проверьте загрузку сервера, использование памяти, доступ к диску (верхний, свободный, vmstat, iostat).
Сколько строк у вас в таблице пользователей? Какой тип хранилища (MyISAM, InnoDB)?
Вы можете настроить сервер MySQL на закрытие неиспользуемых соединений:
# /etc/my.cnf
...
# close unused connections after timeout
set-variable = wait_timeout=300
# keep 50 threads in cache
set-variable = thread_cache_size=50