Hello, The question of performance of jradius has been raised a couple times. I thought I'd share some recent findings and improvements. Attached are some radperf results of various setups and a brief discussion is below. The tests are after changes we have made, which we will be integrating into jradius/rlm_jradius soon. What we have done amounts to: - buffers read/write to jradius socket in rlm_jradius and jradius-server - object reuse of heavily used Java objects (radius packets, attributes, etc - using Apache commons "pool" for this) - using ByteBuffer instead of wrapped Streams throughout jradius (resulting in less objects and method calls) - and some more things... It should also be noted that jradius per-default will maintain a RADIUS "session" keyed on the combination of some attributes - analogous to the "Acct-Unique-Session-Id" - and a thread-safe RadiusSession cached object. For the testing, we disabled the session manager (and therefor the session locking) since all the packets from radperf appear to be of the same session, and requests are serialized around the session lock. The tests are with the setup: Thread pool: 128 thread pool { start_servers = 128 max_servers = 128 min_spare_servers = 3 max_spare_servers = 128 max_requests_per_server = 0 } JRadius config: jradius { name = "test" primary = "localhost" timeout = 2 keepalive = yes connections = 128 onfail = NOOP allow_codechange = yes } RadPerf performed using: radperf -x -s -f test.csv -T nas.rad -a pap -p 200 -c 20000 localhost auth <sec> -q Summary of test: FreeRADIUS 'users' file: ~ 17500 p/s FreeRADIUS rlm_perl (example.pl): ~ 7600 p/s FreeRADIUS rlm_jradius (LocalUsers): ~ 2500 p/s Native Java jradius (CoovaRADIUS): ~ 12000 p/s Still some room for improvement... but, we are getting there. Valgrind reveals that FreeRADIUS is spending a lot of time in rlm_jradius as it parses and creates/add attributes. This part could be streamlined a lot as the attributes (in request and response) don't always change yet rlm_jradius is freeing/creating new attributes constantly. I suspect fixing that would greatly improve the rlm_jradius performance. Cheers, David