Comment #4 on issue 23 by [email protected]: Diameter Stack:
Improve Diameter Router (Performance & Footprint)
http://code.google.com/p/jdiameter/issues/detail?id=23
Hi,
In response to your 3 queries:
1) We were having collisions with HbH resulting in timeouts being
experienced by clients (no response being sent as the router could not find
a route). The concatenation of 3 strings is statistically insignificant
compared to all the other processing.
2) Again, this has minimal performance impact on a per transaction basis as
the map is fairly small (only storing inflight entries). The old mechanism
of doing a periodic reaping was killing performance as under high
throughput (say 3000 tps), the reaping would happen fairly often and cause
pauses that would cascade across the entire test and cause timeouts. This
was exacerbated by the FSM being single threaded. Also, the reaping ended
up sometimes removing inflight requests, again resulting in client timeouts.
3) I agree... (its a hack ;-) ) I only added that code in case there was
some form of "leak". I never saw this code actually being used but kept it
there just in case.
To be honest, the router changes were made in a bit of a rush when we were
performance testing and saw the the router as it was could not deal with
such high throughput (even with a huge map size). One these changes were
made, it was as smooth as silk. I'm sure there may be more elegant
solutions, but we left this one as you see it... cause it was working ;-)