Dinh Pham Cong wrote:
start_servers = 1024 max_servers = 3000 max_spare_servers = 3000
That's a little high.
My sql.conf
# number of sql connections to make to server num_sql_socks = 1000
Remember: 1000 packets/s does *not* mean 1000 threads or 1000 SQL sockets. The server should be able to do 1000 packets/s with a much smaller number of threads && sockets. i.e. 50/50.
I developed a Java client that can create 1000 concurrent threads that connect and send accounting requests (start and stop) to Radius server.
See also "radperf" (http://networkradius.com/radperf.html). It can do load testing and user login simulations.
However, after sending for 20 or 30 seconds, radius server generated a lot of error messages and crashed
Error messages
Tue Nov 10 16:14:34 2009 : Error: Discarding duplicate request from client tester1 port 41442 - ID: 134 due to unfinished request 2436
This is likely because your SQL database is too slow. Have you checked to see if the SQL database can handle 1000 inserts/s?
Crashed
Nov 10 15:55:35 Mobile6 kernel: radiusd[22242]: segfault at 00000000000000c8 rip 0000003daee5306b rsp 00002aae5d82a780 error 4
See doc/bugs for instructions on producing useful crash reports. We can then use these to fix bugs.
Nov 10 15:57:29 Mobile6 kernel: radiusd[30941]: segfault at 00000000000000c8 rip 0000003daee5306b rsp 00002aaee56de180 error 4 Nov 10 16:14:36 Mobile kernel: radiusd[10788]: segfault at 00000000000000c8 rip 0000003daee5306b rsp 00002aac913de780 error 4
What do I need to do to enable FreeRadius server to meet more than 1000 accounting request (INSERT AND DELETE) for a second?
Use a database that can handle 1000 requests/s. Alan DeKok.