Forum OpenACS Q&A: How much hardware power do I need?

Posted by Christof Spitz on
Is there any information about the performance of an OpenACS site? What kind of server do I need for a website with up to maybe some thousand visitors per day and may be about 1000 registered users, out of which about 100-200 are logged in as more or less 'passive' users (looking in forums, faqs etc.), and about 50 staff people who are working more heavily with editing, up- downloading files, maintainig calendars and so on.

Please share you experience to get an idea of what is necessary or how to evaluate this. TIA, Christof

Posted by Malte Sussdorff on
Two ways:

- Go for a good dual processor system with enough RAM (2GB upgradable to more) and fast harddisks. If you are experiencing stress on the system get a cheaper webfrontend (single processor) and use the bigger machine as a DB server

- Start with a smaller system (still 2GB of RAM) and see how it plays. If you come to hurdles get another small system to use as the DB Server. If this still fails, get yourself a large DB server and a loadbalancer in front of the two smaller machines.

Always keep scalability in mind and don't worry too much about getting the hardware "right" from the beginning.

Posted by Patrick Giagnocavo on
I would recommend a dual-processor or dual-core system, using AMD Opteron or the X2 processors; 1GB RAM; some kind of fast disk setup such as 10K rpm SCSI or multiple ATA drives. In the USA you could get something like this for about $900 to $1200 USD.

Reason: you want the dual-processor so that Postgres can be doing something while AOLserver is doing something (as an example); I recommend AMD because they have good memory bandwidth ; and fast disks are useful because when uploading, you first copy to /tmp, then copy the temporary file to some other location (twice the disk bandwidth is needed) .

Posted by Andrew Piskorski on
Christof, there is lots of speed, scaling, and tuning information spread throughout the Forums, but AFAIK there is no one centralized place. It also probably very dependent on just what packges you're using, what custom code you've written, etc.

Btw, there are at least a few OpenACS sites serving fully dynamic content 1000+ concurrent users, e.g. the Learn@WU which Gustaf has discussed various times in the forums. (Those sites also tend to have correspondingly massive hardware, lots of custom code, and people managing them who have spent lots of on tuning, etc.)

Note that Malte's and Patrick's hardware recommendations above are entirely reasonable, but they may or may not actually be necessary, depending on your site. If your site is small you can probably run it just fine on even a cheap desktop. (And of course if your site is very busy, a modern 2 cpu 2 GB RAM machine might not be enough.) A good iterative approach is something like this:

  1. If you have the money to just buy a new but fairly modest server as Malte and Patrick recommend, just buy it. If you aren't willing to spend the money yet, just take any old desktop you have lying around, and use that. Either way, we will call this "server_1".

  2. Install your Development system on server_1 and get it working. Set up your Dev site. Do your own load testing and see how things go. (If your sever is just too wimply, everything will be slow, but you my ind that only a few queries or pages are slow, and need to be tuned.) Start giving your internal users accounts and have them try out functionality.

  3. You need to do the above anyway to develop your site, and in the process, you will soon start getting an idea of whether the server_1 hardware is adequate for your needs. If server_1 is not adequate, ideally do some investigation to figure out what the primary rate limitor is (e.g., disk I/O, CPU, memory size), then take an educated guess at how much bigger a machine you need.

  4. Note that either way server_1 probably isn't wasted money, as if your site is busy enough that you need server_2, you will likely still want to use server_1 for your Dev site, as a front-end webserver machine, or etc.