FWIW, We just had to roll back our CAS 6.6.1 deployment in production due to this performance regression. P99 latencies ranged between 35 seconds and 9 minutes for some requests under load.
~Mike On Friday, October 28, 2022 at 8:05:55 AM UTC-4 [email protected] wrote: > Solutions I can think of: > > - add a memory cache [ ticketId => redisKey ] > (it should help a lot, even if it will still be slower than before in case > of load balancing) > > - revert suffixing redis key with userid > (easy change in RedisTicketRegistry.java) > > - and possibly add userid suffix in a UniqueTicketIdGenerator, the way > HostNameBasedUniqueTicketIdGenerator suffixes with hostname > (but it may be hard to do...) > > cu > > On 28/10/2022 11:13, Jérôme LELEU wrote: > > Hi, > > > > Thanks for raising the point. > > > > It's always hard to find a good balance between a generic design and > performance. > > > > It seems to me that performing scans to get a ticket is not the best > thing to do in terms of performance. > > > > The Redis ticket registry is commonly used and we should try to avoid > any performance degradation. > > > > I have a few ideas in mind, but I'm not a Redis specialist: what do you > propose? > > > > Thanks. > > Best regards, > > Jérôme > > > > > > Le jeu. 27 oct. 2022 à 19:59, Pascal Rigaux <[email protected] > <mailto:[email protected]>> a écrit : > > > > Hi, > > > > In 6.6.x Redis ticket registry key is suffixed with userid (since > 6.6.0-RC4) > > > > This is great to know who owns a TGT or a ST. > > > > Alas, this means getting a TGT from Redis now requires a "SCAN"... which > is much more costly. > > Example: full "SCAN" is ~100 times slower then "GET" on our production > Redis (dbsize ~100k, because we have 1 month rememberMe TGT) > > > > > > For the record, getting a ST triggers > > - on 5.3 : 8 redis "GET" on the TGT > > - on 6.5 : 17 redis "GET" on the TGT > > - on 6.6 : 15 redis "SCAN" + "GET" on the TGT on a small redis db > > > > > > > > PS: "cas.ticket.registry.core.enable-locking=false" fails on redis > ticket registry with error > > > Could not find a destroy method named 'destroy' on bean with name > 'casTicketRegistryRedisLockRegistry' > > -- - Website: https://apereo.github.io/cas - Gitter Chatroom: https://gitter.im/apereo/cas - List Guidelines: https://goo.gl/1VRrw7 - Contributions: https://goo.gl/mh7qDG --- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/ecbec290-560b-4a1c-861d-ac6fad04be38n%40apereo.org.
