|
|
|
Dean Heisey
|
After reading through the old postings and the CASUM I have not found any mention of an EHCache backed ticket registry. I have two questions:
1) has anyone implemented one yet? 2) the Users Manual mentions terracotta and the default ticket registry. Does that actually work and has anyone implemented it? Dean |
|
Scott Battaglia-2
|
On Thu, Oct 29, 2009 at 5:11 PM, Dean Heisey <[hidden email]> wrote:
When we first tried it, it didn't scale very well. We haven't tried with newer versions. 2) the Users Manual mentions terracotta and the default ticket registry. There have a been a few instances where its been deployed. We include a sample config in SVN. Cheers, Scott
-- |
||||||||||||||||
|
Cyrille Le Clerc-2
|
Hello Dean,
We happily use a Distributed EHCache Ticket Registry on a high volume french portal that reaches a max of 40 ticket granting tickets and 80 service tickets created per second. That is about 120 tickets replicated per second. This EH Cache Ticket Registry has been used for more than six month without causing major issues and the traffic is increasing. We are very happy with EH Cache and RMI because they almost do not require configuration and tuning. We would have been interested in Memcached but we didn't have skills to provide 7x24 support on this technology we don't use in-house. For this, we have a cluster of three nodes : * HP ProLiant G5 dual quad cores 54xx Intel Xeon. * Red Hat Enterprise Linux 4 / 2.6.9-78.0.8.ELsmp 32 bits * Sun jdk 1.6.0.13 * Tomcat 6.0.18 * CAS 3.3.1 * EHCache 1.6.1 with : ** Auto discovery of the peers ** RMI Synchronous Replicator for service tickets : service tickets validation doesn't benefit of server affinity and can occur few ms after creation ** RMI Asynchronous Replicator for the ticket granting tickets : ticket granting ticket benefit of server affinity because they are always accessed via the end user browser (no server-to-server exchanges) The CPU consumed by this application remain quite low and we have deployed other high traffic web applications on these physical servers. The biggest problem we faced was the saturation of the Network Interface Cards because we didn't know but we used and 100 Mbits/s switch (pretty surprising in 2009 ;-) ). The servers froze on RMI socket establishment calls. Once we upgraded to a Giga Bits Ethernet switch, everything came back to normal. Another point you may worry about is long stop-the-world-garbage-collection phases on peer servers if you set aggressive RMI read timeouts. We didn't feel the need to define RMI timeouts on our CAS cluster but we use it on another application that also heavily rely on Distributed Sync RMI EHCache and face sparse RMI timeouts that seem to be caused by long stop-the-world-garbage collections on peer servers. I am no longer member of the SSO team but I am sure we can give you the one hundred lines of code of the EHCacheTicketRegistry. Hope this helps, Cyrille -- Cyrille Le Clerc [hidden email] [hidden email] http://blog.xebia.fr On Thu, Oct 29, 2009 at 10:29 PM, Scott Battaglia <[hidden email]> wrote: > > On Thu, Oct 29, 2009 at 5:11 PM, Dean Heisey <[hidden email]> wrote: >> >> After reading through the old postings and the CASUM I have not found any >> mention of an EHCache backed ticket registry. I have two questions: >> >> 1) has anyone implemented one yet? > > When we first tried it, it didn't scale very well. We haven't tried with newer versions. > >> >> 2) the Users Manual mentions terracotta and the default ticket registry. >> Does that actually work and has anyone implemented it? > > There have a been a few instances where its been deployed. We include a sample config in SVN. > > Cheers, > Scott > >> >> Dean >> -- >> View this message in context: http://n4.nabble.com/CAS-EHCache-Ticket-Registry-tp278045p278045.html >> Sent from the CAS Users mailing list archive at Nabble.com. >> >> -- >> You are currently subscribed to [hidden email] as: [hidden email] >> To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- > You are currently subscribed to [hidden email] as: [hidden email] > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user -- You are currently subscribed to [hidden email] as: [hidden email] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user |
||||||||||||||||
|
Dean Heisey
|
Hi Cyrille,
Thanks for sharing your experience. If you can share the code that would be great, if not. I will implement my own. Dean -----Original Message----- From: Cyrille Le Clerc [mailto:[hidden email]] Sent: Tuesday, November 03, 2009 12:56 AM To: [hidden email] Subject: Re: [cas-user] CAS + EHCache Ticket Registry Hello Dean, We happily use a Distributed EHCache Ticket Registry on a high volume french portal that reaches a max of 40 ticket granting tickets and 80 service tickets created per second. That is about 120 tickets replicated per second. This EH Cache Ticket Registry has been used for more than six month without causing major issues and the traffic is increasing. We are very happy with EH Cache and RMI because they almost do not require configuration and tuning. We would have been interested in Memcached but we didn't have skills to provide 7x24 support on this technology we don't use in-house. For this, we have a cluster of three nodes : * HP ProLiant G5 dual quad cores 54xx Intel Xeon. * Red Hat Enterprise Linux 4 / 2.6.9-78.0.8.ELsmp 32 bits * Sun jdk 1.6.0.13 * Tomcat 6.0.18 * CAS 3.3.1 * EHCache 1.6.1 with : ** Auto discovery of the peers ** RMI Synchronous Replicator for service tickets : service tickets validation doesn't benefit of server affinity and can occur few ms after creation ** RMI Asynchronous Replicator for the ticket granting tickets : ticket granting ticket benefit of server affinity because they are always accessed via the end user browser (no server-to-server exchanges) The CPU consumed by this application remain quite low and we have deployed other high traffic web applications on these physical servers. The biggest problem we faced was the saturation of the Network Interface Cards because we didn't know but we used and 100 Mbits/s switch (pretty surprising in 2009 ;-) ). The servers froze on RMI socket establishment calls. Once we upgraded to a Giga Bits Ethernet switch, everything came back to normal. Another point you may worry about is long stop-the-world-garbage-collection phases on peer servers if you set aggressive RMI read timeouts. We didn't feel the need to define RMI timeouts on our CAS cluster but we use it on another application that also heavily rely on Distributed Sync RMI EHCache and face sparse RMI timeouts that seem to be caused by long stop-the-world-garbage collections on peer servers. I am no longer member of the SSO team but I am sure we can give you the one hundred lines of code of the EHCacheTicketRegistry. Hope this helps, Cyrille -- Cyrille Le Clerc [hidden email] [hidden email] http://blog.xebia.fr On Thu, Oct 29, 2009 at 10:29 PM, Scott Battaglia <[hidden email]> wrote: > > On Thu, Oct 29, 2009 at 5:11 PM, Dean Heisey <[hidden email]> wrote: >> >> After reading through the old postings and the CASUM I have not found any >> mention of an EHCache backed ticket registry. I have two questions: >> >> 1) has anyone implemented one yet? > > When we first tried it, it didn't scale very well. We haven't tried with newer versions. > >> >> 2) the Users Manual mentions terracotta and the default ticket registry. >> Does that actually work and has anyone implemented it? > > There have a been a few instances where its been deployed. We include a sample config in SVN. > > Cheers, > Scott > >> >> Dean >> -- >> View this message in context: http://n4.nabble.com/CAS-EHCache-Ticket-Registry-tp278045p278045.html >> Sent from the CAS Users mailing list archive at Nabble.com. >> >> -- >> You are currently subscribed to [hidden email] as: [hidden email] >> To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- > You are currently subscribed to [hidden email] as: [hidden email] > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user -- You are currently subscribed to [hidden email] as: [hidden email] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user -- You are currently subscribed to [hidden email] as: [hidden email] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user |
||||||||||||||||
|
Cyrille Le Clerc-2
|
Hello Dean,
Sorry for the delay. Here is the EhCacheTicketRegistry.java with a JA-SIG Licence. I send it both as an attachment and doing a copy-paste in the email body in case the mailing mist would reject attachments. Hope this helps, Cyrille /* * Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license * distributed with this file and available online at * http://www.uportal.org/license.html */ package org.jasig.cas.ticket.registry.ehcache; import java.util.Collection; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import org.inspektr.common.ioc.annotation.NotNull; import org.jasig.cas.ticket.ServiceTicket; import org.jasig.cas.ticket.Ticket; import org.jasig.cas.ticket.TicketGrantingTicket; import org.jasig.cas.ticket.registry.AbstractDistributedTicketRegistry; import org.jasig.cas.ticket.registry.TicketRegistry; import org.springframework.core.style.ToStringCreator; /** * <p> * <a href="http://ehcache.sourceforge.net/">EHCache</a> based distributed ticket registry. * </p> * <p> * Use distinct caches for ticket granting tickets (TGT) and service tickets (ST) for: * <ul> * <li>Tuning : use cache level time to live with different values for TGT an ST.</li> * <li>Tuning : have different replication strategies for TGT and ST (ST should be synchronized more quickly).</li> * <li>Monitoring : follow separately the number of TGT and ST.</li> * <ul> * </p> * * @author <a href="mailto:[hidden email]">Cyrille Le Clerc</a> */ public class EhCacheTicketRegistry extends AbstractDistributedTicketRegistry implements TicketRegistry { @NotNull protected Cache serviceTicketsCache; @NotNull protected Cache ticketGrantingTicketsCache; @Override public void addTicket(Ticket ticket) { Element element = new Element(ticket.getId(), ticket); if (ticket instanceof ServiceTicket) { serviceTicketsCache.put(element); } else if (ticket instanceof TicketGrantingTicket) { ticketGrantingTicketsCache.put(element); } else { throw new IllegalArgumentException("Invalid ticket type " + ticket); } } @Override public boolean deleteTicket(String ticketId) { boolean result; if (ticketId.startsWith(TicketGrantingTicket.PREFIX)) { result = ticketGrantingTicketsCache.remove(ticketId); } else if (ticketId.startsWith(ServiceTicket.PREFIX)) { result = serviceTicketsCache.remove(ticketId); } else { result = false; if (log.isInfoEnabled()) { log.info("Unsupported ticket prefix for ticketId '" + ticketId + "', return " + result); } } return result; } @Override public Ticket getTicket(String ticketId) { Element element; if (ticketId.startsWith(TicketGrantingTicket.PREFIX)) { element = ticketGrantingTicketsCache.get(ticketId); } else if (ticketId.startsWith(ServiceTicket.PREFIX)) { element = serviceTicketsCache.get(ticketId); } else { element = null; if (log.isInfoEnabled()) { log.info("Unsupported ticket prefix for ticketId '" + ticketId + "', return " + element); } } return element == null ? null : getProxiedTicketInstance((Ticket)element.getValue()); } @Override public Collection<Ticket> getTickets() { throw new UnsupportedOperationException("GetTickets not supported."); } public void setServiceTicketsCache(Cache serviceTicketsCache) { this.serviceTicketsCache = serviceTicketsCache; } public void setTicketGrantingTicketsCache(Cache ticketGrantingTicketsCache) { this.ticketGrantingTicketsCache = ticketGrantingTicketsCache; } @Override public String toString() { return new ToStringCreator(this).append("ticketGrantingTicketsCache", this.ticketGrantingTicketsCache) .append("serviceTicketsCache", this.serviceTicketsCache).toString(); } @Override protected void updateTicket(Ticket ticket) { addTicket(ticket); } } On Tue, Nov 3, 2009 at 9:52 PM, Dean Heisey <[hidden email]> wrote: > > Hi Cyrille, > > Thanks for sharing your experience. If you can share the code that would be great, if not. I will implement my own. > > Dean > > -----Original Message----- > From: Cyrille Le Clerc [mailto:[hidden email]] > Sent: Tuesday, November 03, 2009 12:56 AM > To: [hidden email] > Subject: Re: [cas-user] CAS + EHCache Ticket Registry > > Hello Dean, > > We happily use a Distributed EHCache Ticket Registry on a high > volume french portal that reaches a max of 40 ticket granting tickets > and 80 service tickets created per second. That is about 120 tickets > replicated per second. > > This EH Cache Ticket Registry has been used for more than six month > without causing major issues and the traffic is increasing. We are > very happy with EH Cache and RMI because they almost do not require > configuration and tuning. We would have been interested in Memcached > but we didn't have skills to provide 7x24 support on this technology > we don't use in-house. > > For this, we have a cluster of three nodes : > * HP ProLiant G5 dual quad cores 54xx Intel Xeon. > * Red Hat Enterprise Linux 4 / 2.6.9-78.0.8.ELsmp 32 bits > * Sun jdk 1.6.0.13 > * Tomcat 6.0.18 > * CAS 3.3.1 > * EHCache 1.6.1 with : > ** Auto discovery of the peers > ** RMI Synchronous Replicator for service tickets : > service tickets validation doesn't benefit of server affinity > and can occur few ms after creation > ** RMI Asynchronous Replicator for the ticket granting tickets : > ticket granting ticket benefit of server affinity because they > are always accessed via the end user browser > (no server-to-server exchanges) > > The CPU consumed by this application remain quite low and we have > deployed other high traffic web applications on these physical > servers. > > The biggest problem we faced was the saturation of the Network > Interface Cards because we didn't know but we used and 100 Mbits/s > switch (pretty surprising in 2009 ;-) ). The servers froze on RMI > socket establishment calls. Once we upgraded to a Giga Bits Ethernet > switch, everything came back to normal. > > Another point you may worry about is long > stop-the-world-garbage-collection phases on peer servers if you set > aggressive RMI read timeouts. > We didn't feel the need to define RMI timeouts on our CAS cluster > but we use it on another application that also heavily rely on > Distributed Sync RMI EHCache and face sparse RMI timeouts that seem to > be caused by long stop-the-world-garbage collections on peer servers. > > I am no longer member of the SSO team but I am sure we can give you > the one hundred lines of code of the EHCacheTicketRegistry. > > Hope this helps, > > Cyrille > > -- > Cyrille Le Clerc > [hidden email] [hidden email] > http://blog.xebia.fr > > On Thu, Oct 29, 2009 at 10:29 PM, Scott Battaglia > <[hidden email]> wrote: > > > > On Thu, Oct 29, 2009 at 5:11 PM, Dean Heisey <[hidden email]> wrote: > >> > >> After reading through the old postings and the CASUM I have not found any > >> mention of an EHCache backed ticket registry. I have two questions: > >> > >> 1) has anyone implemented one yet? > > > > When we first tried it, it didn't scale very well. We haven't tried with newer versions. > > > >> > >> 2) the Users Manual mentions terracotta and the default ticket registry. > >> Does that actually work and has anyone implemented it? > > > > There have a been a few instances where its been deployed. We include a sample config in SVN. > > > > Cheers, > > Scott > > > >> > >> Dean > >> -- > >> View this message in context: http://n4.nabble.com/CAS-EHCache-Ticket-Registry-tp278045p278045.html > >> Sent from the CAS Users mailing list archive at Nabble.com. > >> > >> -- > >> You are currently subscribed to [hidden email] as: [hidden email] > >> To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > > > -- > > You are currently subscribed to [hidden email] as: [hidden email] > > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- > You are currently subscribed to [hidden email] as: [hidden email] > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- > You are currently subscribed to [hidden email] as: [hidden email] > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > You are currently subscribed to [hidden email] as: [hidden email] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user /* * Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license * distributed with this file and available online at * http://www.uportal.org/license.html */ package org.jasig.cas.ticket.registry.ehcache; import java.util.Collection; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import org.inspektr.common.ioc.annotation.NotNull; import org.jasig.cas.ticket.ServiceTicket; import org.jasig.cas.ticket.Ticket; import org.jasig.cas.ticket.TicketGrantingTicket; import org.jasig.cas.ticket.registry.AbstractDistributedTicketRegistry; import org.jasig.cas.ticket.registry.TicketRegistry; import org.springframework.core.style.ToStringCreator; /** * <p> * <a href="http://ehcache.sourceforge.net/">EHCache</a> based distributed ticket registry. * </p> * <p> * Use distinct caches for ticket granting tickets (TGT) and service tickets (ST) for: * <ul> * <li>Tuning : use cache level time to live with different values for TGT an ST.</li> * <li>Tuning : have different replication strategies for TGT and ST (ST should be synchronized more quickly).</li> * <li>Monitoring : follow separately the number of TGT and ST.</li> * <ul> * </p> * * @author <a href="mailto:[hidden email]">Cyrille Le Clerc</a> */ public class EhCacheTicketRegistry extends AbstractDistributedTicketRegistry implements TicketRegistry { @NotNull protected Cache serviceTicketsCache; @NotNull protected Cache ticketGrantingTicketsCache; @Override public void addTicket(Ticket ticket) { Element element = new Element(ticket.getId(), ticket); if (ticket instanceof ServiceTicket) { serviceTicketsCache.put(element); } else if (ticket instanceof TicketGrantingTicket) { ticketGrantingTicketsCache.put(element); } else { throw new IllegalArgumentException("Invalid ticket type " + ticket); } } @Override public boolean deleteTicket(String ticketId) { boolean result; if (ticketId.startsWith(TicketGrantingTicket.PREFIX)) { result = ticketGrantingTicketsCache.remove(ticketId); } else if (ticketId.startsWith(ServiceTicket.PREFIX)) { result = serviceTicketsCache.remove(ticketId); } else { result = false; if (log.isInfoEnabled()) { log.info("Unsupported ticket prefix for ticketId '" + ticketId + "', return " + result); } } return result; } @Override public Ticket getTicket(String ticketId) { Element element; if (ticketId.startsWith(TicketGrantingTicket.PREFIX)) { element = ticketGrantingTicketsCache.get(ticketId); } else if (ticketId.startsWith(ServiceTicket.PREFIX)) { element = serviceTicketsCache.get(ticketId); } else { element = null; if (log.isInfoEnabled()) { log.info("Unsupported ticket prefix for ticketId '" + ticketId + "', return " + element); } } return element == null ? null : getProxiedTicketInstance((Ticket)element.getValue()); } @Override public Collection<Ticket> getTickets() { throw new UnsupportedOperationException("GetTickets not supported."); } public void setServiceTicketsCache(Cache serviceTicketsCache) { this.serviceTicketsCache = serviceTicketsCache; } public void setTicketGrantingTicketsCache(Cache ticketGrantingTicketsCache) { this.ticketGrantingTicketsCache = ticketGrantingTicketsCache; } @Override public String toString() { return new ToStringCreator(this).append("ticketGrantingTicketsCache", this.ticketGrantingTicketsCache) .append("serviceTicketsCache", this.serviceTicketsCache).toString(); } @Override protected void updateTicket(Ticket ticket) { addTicket(ticket); } } |
||||||||||||||||
|
Dean Heisey
|
Thanks Cyrrile,
I got pulled into another project and am just getting back to this. Dean -----Original Message----- From: Cyrille Le Clerc [mailto:[hidden email]] Sent: Sunday, November 08, 2009 10:21 AM To: [hidden email] Subject: Re: [cas-user] CAS + EHCache Ticket Registry Hello Dean, Sorry for the delay. Here is the EhCacheTicketRegistry.java with a JA-SIG Licence. I send it both as an attachment and doing a copy-paste in the email body in case the mailing mist would reject attachments. Hope this helps, Cyrille /* * Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license * distributed with this file and available online at * http://www.uportal.org/license.html */ package org.jasig.cas.ticket.registry.ehcache; import java.util.Collection; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import org.inspektr.common.ioc.annotation.NotNull; import org.jasig.cas.ticket.ServiceTicket; import org.jasig.cas.ticket.Ticket; import org.jasig.cas.ticket.TicketGrantingTicket; import org.jasig.cas.ticket.registry.AbstractDistributedTicketRegistry; import org.jasig.cas.ticket.registry.TicketRegistry; import org.springframework.core.style.ToStringCreator; /** * <p> * <a href="http://ehcache.sourceforge.net/">EHCache</a> based distributed ticket registry. * </p> * <p> * Use distinct caches for ticket granting tickets (TGT) and service tickets (ST) for: * <ul> * <li>Tuning : use cache level time to live with different values for TGT an ST.</li> * <li>Tuning : have different replication strategies for TGT and ST (ST should be synchronized more quickly).</li> * <li>Monitoring : follow separately the number of TGT and ST.</li> * <ul> * </p> * * @author <a href="mailto:[hidden email]">Cyrille Le Clerc</a> */ public class EhCacheTicketRegistry extends AbstractDistributedTicketRegistry implements TicketRegistry { @NotNull protected Cache serviceTicketsCache; @NotNull protected Cache ticketGrantingTicketsCache; @Override public void addTicket(Ticket ticket) { Element element = new Element(ticket.getId(), ticket); if (ticket instanceof ServiceTicket) { serviceTicketsCache.put(element); } else if (ticket instanceof TicketGrantingTicket) { ticketGrantingTicketsCache.put(element); } else { throw new IllegalArgumentException("Invalid ticket type " + ticket); } } @Override public boolean deleteTicket(String ticketId) { boolean result; if (ticketId.startsWith(TicketGrantingTicket.PREFIX)) { result = ticketGrantingTicketsCache.remove(ticketId); } else if (ticketId.startsWith(ServiceTicket.PREFIX)) { result = serviceTicketsCache.remove(ticketId); } else { result = false; if (log.isInfoEnabled()) { log.info("Unsupported ticket prefix for ticketId '" + ticketId + "', return " + result); } } return result; } @Override public Ticket getTicket(String ticketId) { Element element; if (ticketId.startsWith(TicketGrantingTicket.PREFIX)) { element = ticketGrantingTicketsCache.get(ticketId); } else if (ticketId.startsWith(ServiceTicket.PREFIX)) { element = serviceTicketsCache.get(ticketId); } else { element = null; if (log.isInfoEnabled()) { log.info("Unsupported ticket prefix for ticketId '" + ticketId + "', return " + element); } } return element == null ? null : getProxiedTicketInstance((Ticket)element.getValue()); } @Override public Collection<Ticket> getTickets() { throw new UnsupportedOperationException("GetTickets not supported."); } public void setServiceTicketsCache(Cache serviceTicketsCache) { this.serviceTicketsCache = serviceTicketsCache; } public void setTicketGrantingTicketsCache(Cache ticketGrantingTicketsCache) { this.ticketGrantingTicketsCache = ticketGrantingTicketsCache; } @Override public String toString() { return new ToStringCreator(this).append("ticketGrantingTicketsCache", this.ticketGrantingTicketsCache) .append("serviceTicketsCache", this.serviceTicketsCache).toString(); } @Override protected void updateTicket(Ticket ticket) { addTicket(ticket); } } On Tue, Nov 3, 2009 at 9:52 PM, Dean Heisey <[hidden email]> wrote: > > Hi Cyrille, > > Thanks for sharing your experience. If you can share the code that would be great, if not. I will implement my own. > > Dean > > -----Original Message----- > From: Cyrille Le Clerc [mailto:[hidden email]] > Sent: Tuesday, November 03, 2009 12:56 AM > To: [hidden email] > Subject: Re: [cas-user] CAS + EHCache Ticket Registry > > Hello Dean, > > We happily use a Distributed EHCache Ticket Registry on a high > volume french portal that reaches a max of 40 ticket granting tickets > and 80 service tickets created per second. That is about 120 tickets > replicated per second. > > This EH Cache Ticket Registry has been used for more than six month > without causing major issues and the traffic is increasing. We are > very happy with EH Cache and RMI because they almost do not require > configuration and tuning. We would have been interested in Memcached > but we didn't have skills to provide 7x24 support on this technology > we don't use in-house. > > For this, we have a cluster of three nodes : > * HP ProLiant G5 dual quad cores 54xx Intel Xeon. > * Red Hat Enterprise Linux 4 / 2.6.9-78.0.8.ELsmp 32 bits > * Sun jdk 1.6.0.13 > * Tomcat 6.0.18 > * CAS 3.3.1 > * EHCache 1.6.1 with : > ** Auto discovery of the peers > ** RMI Synchronous Replicator for service tickets : > service tickets validation doesn't benefit of server affinity > and can occur few ms after creation > ** RMI Asynchronous Replicator for the ticket granting tickets : > ticket granting ticket benefit of server affinity because they > are always accessed via the end user browser > (no server-to-server exchanges) > > The CPU consumed by this application remain quite low and we have > deployed other high traffic web applications on these physical > servers. > > The biggest problem we faced was the saturation of the Network > Interface Cards because we didn't know but we used and 100 Mbits/s > switch (pretty surprising in 2009 ;-) ). The servers froze on RMI > socket establishment calls. Once we upgraded to a Giga Bits Ethernet > switch, everything came back to normal. > > Another point you may worry about is long > stop-the-world-garbage-collection phases on peer servers if you set > aggressive RMI read timeouts. > We didn't feel the need to define RMI timeouts on our CAS cluster > but we use it on another application that also heavily rely on > Distributed Sync RMI EHCache and face sparse RMI timeouts that seem to > be caused by long stop-the-world-garbage collections on peer servers. > > I am no longer member of the SSO team but I am sure we can give you > the one hundred lines of code of the EHCacheTicketRegistry. > > Hope this helps, > > Cyrille > > -- > Cyrille Le Clerc > [hidden email] [hidden email] > http://blog.xebia.fr > > On Thu, Oct 29, 2009 at 10:29 PM, Scott Battaglia > <[hidden email]> wrote: > > > > On Thu, Oct 29, 2009 at 5:11 PM, Dean Heisey <[hidden email]> wrote: > >> > >> After reading through the old postings and the CASUM I have not found any > >> mention of an EHCache backed ticket registry. I have two questions: > >> > >> 1) has anyone implemented one yet? > > > > When we first tried it, it didn't scale very well. We haven't tried with newer versions. > > > >> > >> 2) the Users Manual mentions terracotta and the default ticket registry. > >> Does that actually work and has anyone implemented it? > > > > There have a been a few instances where its been deployed. We include a sample config in SVN. > > > > Cheers, > > Scott > > > >> > >> Dean > >> -- > >> View this message in context: http://n4.nabble.com/CAS-EHCache-Ticket-Registry-tp278045p278045.html > >> Sent from the CAS Users mailing list archive at Nabble.com. > >> > >> -- > >> You are currently subscribed to [hidden email] as: [hidden email] > >> To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > > > -- > > You are currently subscribed to [hidden email] as: [hidden email] > > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- > You are currently subscribed to [hidden email] as: [hidden email] > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- > You are currently subscribed to [hidden email] as: [hidden email] > To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user > -- You are currently subscribed to [hidden email] as: [hidden email] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user -- You are currently subscribed to [hidden email] as: [hidden email] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |