Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Does SilverStripe scale?


Go to End


8 Posts   2905 Views

Avatar
Judge

Community Member, 79 Posts

12 January 2010 at 12:32am

Edited: 12/01/2010 12:34am

It's a simple question, and I'm looking for an honest answer.

The examples and showcases, and the way the administration screens are laid out, looks to me like SS is ideal for small websites - brochure sites and suchlike. That's all great, but how does it scale when a website gets large?

For example, if I have 400 pages, accessible through different privilege groups, and 4,000 news stories - how would SS perform? Since everything seems to appear as a node in the admin tree, what would those 4k news stories do to me administration session?

I'm just asking *before* I start looking seriously into using SS for a site that may grow large. If I knew the code inside-out, I would be able to recognise where the scalability issues would likely be, but that's much further down the line.

So - any practical experience on performance of large SS sites? Anyone here who knows the code and can give me an indication of areas where they feel there may be problems?

-- Jason

PS Scalability issues does not mean I definitely won't be using SS, but knowledge of where the performance problems would likely be would help to target any development effort.

Avatar
Willr

Forum Moderator, 5523 Posts

12 January 2010 at 10:43am

Hey Judge, Welcome the to Forum.

If you're planning on having 4k articles then I suggest you go for something like a DataObject + ModelAdmin implementation. That is much more scalable then using the tree with page nodes. We have quite a few model admin instances with over 20,000 objects and it handles adding, editing, searching like a piece of cake. Only issue you might have with news articles is the HTML Editor does have some issues in model admin. These may have been fixed in 2.4 so you might want to try a recent build of that.

In terms of front end performance, you shouldn't notice a massive performance hit as pages build up (unless you're trying to get a DataObjectSet of all the entries at once!). You might also have to be a bit careful when using things like $Count. By default $Count calls sizeof() on a DataObjectSet so it has to generate a whole set just for the count, which is fairly slow as you can imagine. With front end performance you can also implement quite a few different types of caching now to cut down on issues.

Avatar
Judge

Community Member, 79 Posts

12 January 2010 at 10:56am

Thank you - that is reassuring. All the examples I had seen put every object into the admin navigation tree. If there are plugins that handle objects outside of the tree, then that is great. I'll download and give them a try.

-- Jason

Avatar
Rose

Community Member, 1 Post

15 July 2010 at 3:14am

Hi Will,

I have a similar concern with scalability, but not just with the amount of content. I"m also concerned about being able to scale to support increased traffic. Does SliverStripe work in an environment where the web servers are load balanced? What is the best practice for adding server capacity?

We are still in the evaluation phase of selecting a new CMS and moving to something that is scalable is critical.

Thanks for any advice and insight you can provide.

Avatar
Willr

Forum Moderator, 5523 Posts

15 July 2010 at 8:21pm

Edited: 15/07/2010 8:22pm

I've deployed SS sites over multiple servers, load balanced and it works fine no more issues than you would have trying to setup a load balanced system with any other CMS.

Best pieces advice I can give are

* make use of an opcode cache
* use SilverStripe 2.4's partial caching to reduce load on the database. You can even combine that with static publishing on vital pages (like the homepage) to serve up html and therefore completely reducing the load on the server.

* profile, profile, profile. Use the ?debug_profile=1 var (or xdebug for more advanced logging) to see what queries are using a lot of resources and therefore which ones to avoid (or cache).
* Over multiple servers do not duplicate the database (which some people tried to do) instead setup 1 host for powering the database and set it up so all other web facing machines point to that 1 machine.

Avatar
Martijn

Community Member, 271 Posts

16 July 2010 at 8:10am

I can confirm that using the Partial Caching wisely will boost performance and unload your webserver big time. In combination with decent opcode caching SS can handle easily 4000 - 5000 visitors a day at least without any smoking signs from the webserver.

Avatar
biapar

Forum Moderator, 435 Posts

16 July 2010 at 11:15pm

For db, you can use sync functions for replicate data between servers and so you not heavy load one Db server.

Avatar
DanaK

Community Member, 1 Post

21 July 2010 at 7:05am

We are early in the final stages of deciding if SilverStripe is for us. We are moving off our current CMS. Our current process is to upload images and other files to one server and it runs and rsync job to propogate the adds and deletes to the others in the load balancing scheme. This works fine if we use the CMS or even FTP to get those files to the servers, but if we give our visitors the ability to contribute to our communities (blogs, forums, wikis...) and allow them to upload image files they could upload to any of the servers and if it's not the "master" server the images are removed when the rsync job runs. Have you run into this type of situation and what were you able to do to resolve it? I can think of a few possible solutions all of which have their own downfalls.