[Seaside] I need success stories

Victor vmgoldberg at verizon.net
Fri Feb 22 08:14:30 UTC 2008

Hi Michael,

Your material here has many of the elements that make up a book, which I 
would love to read.  The reading flows smoothly,  the contents is detailed 
and thorough without being boring,  the subject is enlightening.  Maybe each 
paragraph can be developed into a chapter by adding background material, 
definitions, and examples.  I would like to encourage you to do just that, 
write a book on the subject.



----- Original Message ----- 
From: "Michael Lucas-Smith" <mlucas-smith at cincom.com>
To: "Seaside - general discussion" <seaside at lists.squeakfoundation.org>
Sent: Thursday, February 21, 2008 10:38 PM
Subject: Re: [Seaside] I need success stories

>> So, does anyone on this list have experience using Seaside in a high 
>> traffic scenario.  I'm talking 200+ hits per second at least.  How did it 
>> handle the load?  What sort of hardware did you choose?  What load 
>> balancing?  What database?
> I've seen this question pop up from time to time and unfortunately there 
> is no easy answer to it. However, there are some things you can take away 
> that should make you feel more confident about any web framework you 
> choose to use.
> The 200+ requests per second is probably the thing I like to analyze the 
> most, because I always wondered when this sort of traffic would happen. A 
> prime example of an unexpectedly high traffic effect is the digg effect / 
> slashdot effect / various other names. Usually this effect will hit a site 
> that is generally low on traffic, say, 2000+ hits a day. They'll suddenly 
> get boosted to 40k hits in a single hour.
> http://www.geology.smu.edu/~dpa-www/attention_span/
> The important thing to see here is that this 'extreme' where suddenly 
> you're getting the attention of a page like google or yahoo for a few 
> short minutes is exactly how many hits per second you actually have to 
> handle. In the above page they witnessed 78,000 hits per hour on their 
> first slashdotting and 1930 hits per minute.
> The don't give us a higher resolution than that to know exactly how many 
> hits per second they were seeing, but if we take a nieve approach, the 
> average hits per second was 32. If say that all of that traffic hit within 
> the first 15 seconds, then we get up to 96 hits per second.
> Can Seaside handle that? James Robertson did some rather coarse statistics 
> to see how Seaside currently compares across Smalltalks and between 
> Seaside 2.8 and Seaside 2.7. Admittedly, he could have done more but it 
> serves as a nice rough guide:
> http://www.cincomsmalltalk.com/blog/blogView?showComments=true&printTitle=Scaling_Seaside_in_Cincom_Smalltalk&entry=3372841275
> His results show 79.4 hits per second.
> So without real hard data to know exactly what would happen, it appears on 
> the surface that you would actually survive a slashdotting without any 
> extra hardware or any extra caching strategies.
> With that out of the way, we can now talk about what you would do to scale 
> beyond. You can of course, put caching strategies in front of your 
> application, or distribute it across machines, serve it up on Amazon's 
> cloud, use one of the distributed web cache engines, etc... though 
> applications that lend themselves to this sort of distribution are rarely 
> transaction based, so you can almost certainly rule out a requirement for 
> writing to a database as part of that 'massive hit'.
> Even if we say the high hit rate is the norm for your application - and 
> that would require you to really hit something big like Twitter (and 
> Twitter maxed out at a mere 5 hits per second until they started 
> optimizing themselves) - then running two servers at once immediately 
> doubles your capacity.. it is near linear capacity growth when you add 
> more servers.
> I wish I had stats on having two Seaside images running simulatenously on 
> the same machine with dual cores for you, but I don't just yet.. sorry 
> about that.
> So we know that Seaside itself isn't really a major bottleneck to 
> performance, but there are other obvious factors that you've listed above. 
> The big one is Database whether it be an Object database or a Relational 
> database, you end up with the same sorts of bottlenecks.. number of 
> connections, speed of connection to the database, unintentional callback 
> blocking, accidental 'read it all in to memory' instead of streaming... 
> that sort of stuff is quite commonly missed.
> Luckily all those things have been solved when working with Seaside and 
> various databases. Gemstone is multithreaded, Glorps interfaces can 
> connection pooling, VWs VM is non-blocking on callbacks.. most database 
> drivers are streaming based.
> This is in contrast to the way Ruby on Rails is initially setup. It comes 
> with one database connection with a global lock on it. In fact, it was 
> this design flaw in RoR that caused Twitter to faulter so badly. The 
> biggest change they made on their site was not to stop producing pages 
> dynamically (although they did in the end) but to have multiple database 
> connections at once in a pool.
> Another thing that can drastically cripple your application is excessive 
> memory use by your application or other applications on your server such 
> that memory is forced to be paged out to disk. This is an absolute show 
> stopper and can be caused by excessive state storage in your application. 
> This is rarely caused by Seasides continuations and is more often caused 
> by large object domains read from a database and cached in memory for each 
> user or something similar.
> Conversely, creating too many objects and throwing them away immediately 
> (or worse, putting them in a weak set and throwing them away immediately) 
> can tax the server by putting too much pressure on the garbage collector. 
> This can easily halve the number of hits per second you can support. But 
> again, this is a rather rare scenario to be in and it's easy to diagnose 
> with profiling tools.
> A few years back the company I worked for did an online federal election 
> polling site. It was surprisingly popular and experienced regular 
> 'slashdotting' effects. The machine and network were over specced.. quad 
> core, four servers, load balanced, huge raided multicore database server 
> on 1 gb network ... none of the servers batted an eyelid. We could easily 
> have taken a hundred fold traffic increase and we'd still probably have 
> plenty of CPU time left to play civ4 on a huge map.
> Sorry, this has been a long email - but I think my point was - Seaside is 
> unlikely to be a major cause of bottleneck if you do start getting a lot 
> of traffic. The usual strategies for load balancing and removing 
> bottlenecks on the back end work the same as in any other web development 
> environment.
> Cheers,
> Michael
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

More information about the seaside mailing list