Forums / Install & configuration / Is 1 server enough?

Is 1 server enough?

Author Message

Tony Stark

Tuesday 27 October 2009 2:59:20 am

Quick (and possibly stupid question) is 1 dedicated server enough to run a fairly high load eZ Publish install? I know I would have to clarify load so lets say at anyone time about 60-90 people simulatenously connecting to the site performing a wide array of actions - upload of files, using extensions which write to a DB etc

Thanks

Tony

Alex Pagnoni

Saturday 31 October 2009 7:55:21 am

It depends on the server and how much dynamic is the site.

If you can make static most of the site, you can use the static cache to dramatically improve the performances.

You should carefully plan the various eZ caches anyway, you can find more about here:
http://ez.no/developer/articles/ez_publish_performance_optimization_part_3_of_3_practical_cache_and_template_solutions

memcached may also help here.

About the static cache in particular:
http://ez.no/developer/articles/ez_publish_performance_optimization_part_3_of_3_practical_cache_and_template_solutions/static_cache

About the underlying infrastructure, you can find more about here instead:
http://ez.no/developer/articles/server_architecture_for_ez_publish_hosting

Alex

Innoteam
The Content Partners
http://www.innoteam.it

Bertrand Dunogier

Saturday 07 November 2009 8:24:39 am

Well, it really comes down to numbers.

On a big server (quad-core, fast disks, etc), eZ Publish 4.2 can achieve around 100-150 requests/second on cached content. This will decrease based on the amount of dynamic operations performed for each request.

What you can do:

  • implement really well designed caching on your website, with a smart balance between the cost of caching and its usage
  • optimize apache, mysql, php: remove useless modules/extensions, finetune their parameters depending on your amount of RAM, etc. This is even more valid for MySQL & InnoDB. You can find many articles about that online. Also look at details like disabling .htaccess in apache, etc.
  • use a secondary server for MySQL. This kind of gives a 'yes' as an answer to your main question, but it is one of the first optimizations you could perform. Having multiple web frontends has more implications
  • use static caching when possible
  • use a reverse proxy (varnish for instance) to cache similar pages. Can also work with logged with logged in users to some extent (replace server side logic with client side + cookies, etc)
  • use multiple web servers, with clustering enabled on eZ Publish. eZDFS might be an option you could look into, if you like NFS storage rather than DB.

As you can see, there are lots of options to consider... but it comes down to numbers. Try to evaluate as accurately as you can the requirements for your website, depending on users behaviour and usage of the featres, and check that your server can achieve this.

Good luck :)

Bertrand Dunogier
eZ Systems Engineering, Lyon
http://twitter.com/bdunogier
http://gplus.to/BertrandDunogier

Gaetano Giunta

Saturday 07 November 2009 9:19:20 am

Another option beside a reverse proxy like varnish could be to use a lighter webserver than Apache, such as nginX.

The usage of a php opcode cache such as APC or Xcache is mandatory.

Principal Consultant International Business
Member of the Community Project Board

eZ debug

Timing: Jan 18 2025 10:23:49
Script start
Timing: Jan 18 2025 10:23:49
Module start 'content'
Timing: Jan 18 2025 10:23:50
Module end 'content'
Timing: Jan 18 2025 10:23:50
Script end

Main resources:

Total runtime0.9192 sec
Peak memory usage4,096.0000 KB
Database Queries201

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0059 587.7109180.8359
Module start 'content' 0.00590.7394 768.5469645.4766
Module end 'content' 0.74530.1739 1,414.0234337.3750
Script end 0.9192  1,751.3984 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00420.4552210.0002
Check MTime0.00170.1811210.0001
Mysql Total
Database connection0.00080.084610.0008
Mysqli_queries0.834190.73532010.0041
Looping result0.00210.22941990.0000
Template Total0.892897.120.4464
Template load0.00240.261520.0012
Template processing0.890496.863620.4452
Template load and register function0.00020.025710.0002
states
state_id_array0.00050.058710.0005
state_identifier_array0.00160.173420.0008
Override
Cache load0.00210.2276360.0001
Sytem overhead
Fetch class attribute can translate value0.00300.323050.0006
Fetch class attribute name0.00130.142270.0002
XML
Image XML parsing0.00430.467050.0009
class_abstraction
Instantiating content class attribute0.00000.001570.0000
General
dbfile0.00610.6676380.0002
String conversion0.00000.000630.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
4content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
8content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
3content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
3content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
1content/datatype/view/ezxmltags/li.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/li.tplEdit templateOverride template
1content/datatype/view/ezxmltags/ul.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/ul.tplEdit templateOverride template
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 22
 Number of unique templates used: 8

Time used to render debug report: 0.0002 secs