It is very difficult or impossible to give hard numbers for this type of
question. I've always found that more RAM is better but it all depends on
your expected load and how quickly you'd like your pages to load. The best
way would be to setup your server and wiki with some test content and load
test them to give you some numbers on what load you are capable of serving.
If its not good enough you can optimize, add caching layers, change
settings, etc... and retest which gives you hard numbers on what effect
your changes had. I've always used "ab" (ApacheBench) usually on the same
server to give a "good enough" value most of the time (it is usually
optimistic). Something like:
Be sure to test different pages and keep in mind this is simulating a
logged out user (you can simulate a logged in user as well with some
effort). There are numerous other test applications that do the same thing
Regarding the specifics of your question:. When you say "10 - 100 viewers"
do you mean per second, per day, at the same, something else? 100
viewers/day can be "easily" done in 256MB but 100 viewers/sec not so much.
I don't think trying use concurrent users is a good metric for a MediaWiki
site, even if you could define it exactly. Usually I look at my load tests
which give a rough number like "X pages/sec" and match that up with what my
expected or desired load is. So long as "X" is significantly higher than
what you want or need you should be fine.
As for setting up a 256MB server I would try something along the lines of:
- Apache: Very low MaxClients, 2-5 probably as each session could take
10-50MB with everything turned off that you don't need.
- MySQL: Relatively low memory settings (100MB total) but make sure the
query cache is on with around 50MB devoted to it.
- PHP Opcode Cache: Make sure you have one (APC, eAcclerator, etc...)
- memcached: Optional but 10-50MB here might help some.
- MediaWiki: Ensure the file cache is on.
- lighttpd/nginx: Optional but these take very little memory and can serve
all your static content (images, JS, CSS, etc...) and reduce the
load/memory on Apache. You may also be able to replace Apache entirely
- Squid: Optional and things are getting tight but this can take a huge
load/memory of the Apache server if you can find 10-50MB to fit it in.
As a point of reference I had the setup as listed on a low end 512MB RAM
that served a half-million page views a day, albeit slowly (5-10 sec page
load times). I think I hit a sweet spot in performance entirely by chance
with that setup though. As you setup and test your site make sure that you
never hit your swap as this will kill your performance ("top" or "free
There's no end of possible improvement or things to try so I would repeat
the mantra: Test Test Test!
Dave Humphrey -- dave(a)uesp.net
Founder/Server Admin of the Unofficial Elder Scrolls Pages -- www.uesp.net