I'm currently creating the concept for an worldwide antivirus rollout. The deployment of the av and engine updates are partially handled over an http repository. There will be about 250 Windows and Linux clients which must get the updates over http.
The clients will start the update process all 30 minutes.
The repository itself contains many small files (25 KB - 1 MB). There is no dynamic content in fact not even a website. The webserver offers updates only.
Which webserver would you use for this task? Or is the question obsolete because both will handle the task well enough?
I think apache2 is overloaded for this but I've no experience with lighttpd. So thank you very much for your answers.
--
Thank you very much. I'll stay with apache2. I know how to configure it and I think I can tweak it enough to get the performance I need. Hardware (Memory / CPU) isnt my problem. The server will be running on a very powerful VMware VI3 Cluster.
If the update process is to slow or many more clients then estimated have to download the updates I'll probably switch to lighttpd or nginx.
I would start with Apache because it is kind of 'the Standard', and new admins that come in are more likely to know how to configure it already.
If you find the server can't handle the load, and some Apache tweaking won't do it, considering a lighter daemon such as lighttpd might be the way to go.
You may also try nginx. Its very fast for static content and easy on resources.
Either server should be able to cope with that level of static content, as you are likely to max out your bandwidth before you max out the server in either case. This is dependent on your server hardware of course - if all the clients might connect at exactly the same time to pickup up updates then you'll want a fair chunk of RAM to handle all the Apache processes that might be needed to serve that load.
So unless you are using low powered kit (say, something Atom based without lots of RAM) go with which-ever you are more familiar with, or that you have best access to helpful support and other resource for.
Having said that, both should be a walk in the park to configure for simple static only content - the difference under Debian and similar distributions being the choice between
apt-get install apache
andapt-get install lighttpd
. The default Lighttpd configuration will consume noticeably less resources for the same use than an untweaked Apache instance, so if you do not need the extra features of Apache.You might like to try each if time permits. Install Apache, add your content, create test loads using tools like the Apache benchmark utility (making sure your test loads are in excess of your real world expectations to allow for growth) and monitor the resource use, then repeat with lighttpd. Even if you don't try both, you need to perform benchmark tests like this anyway to ensure the chosen solution copes.
Both will be able to handle the content without trouble. Apache will use a little bit more ram on average. As long as you have the memory go with what you are more comfortable and test the other one for the future (and a bit of fun).
I'd probably go with lighttpd. Apache will get the job done, to be sure, but as you mentioned it is overkill if you're willing to learn the setup and configuration of a new software package. Lighttpd's configuration is quite simple, and its design (single-process with a select()/kqueue/equeue loop) allows it to scale up in terms of concurrent requests with lower hardware requirements than Apache. If you envision a large number of users at some point, lighttpd should let you meet the need with less system load.
Lighttpd does, however, come at the expense of learning a new package. If that cost is an issue for your project, sticking with the standard Apache may be wise.
I'd go with Apache, (mind you I'm using lighttpd on my personal VPS, planning to move to Apache in the future).
I don't get this "overkill" argument, yes, it is a bit slower (or so syntetic tests show) and uses more resources, but it's really easy to configure. At it's core, Apache has little to be grasped, all the power and additional complexity comes from modules, and you don't need to start with a whole bunch of them.
Lighttpd is not easy to setup, for example, I decided to host redmine (Rails app) on my VPS, took me no less than 3 evenings and eventually IRC help to figure all the small details out. I've recently done the same with Apache using mod_rails (aka. passenger), took me 20 mins.
You also might need to hack 3rd party apps if you want to use them on lighttpd. For example, magento (at least some older version) doesn't work with lighty without index.php modifications.