An Overview of the Boa Web Server 185
Gentu writes "There is a pretty new and little known, lite web server in town, named Boa. The server can run very fast on older machines, even on embedded devices, but it is only CGI-based. OSNews introduces Boa (running under Linux) and it includes some preliminary benchmarks against Apache and thttpd."
Boa vs. Apache? (Score:4, Funny)
If Boa is too constricting, you might want to switch back to good ol' Apache
Bah dum bah!
Re:Boa vs. Apache? (Score:5, Funny)
And how's the scale-ability?
Better yet... (Score:2, Funny)
How well does it fork?
/.ed (Score:2, Insightful)
Hopefully boa's scalability is better than the web server they're using now.
Re:Boa vs. Apache? (Score:2)
Re:Boa vs. Apache? (Score:3, Funny)
I believe that the Tag line switch was coined by Apple...
Ellen Feiss talking about switching from Boa to OSX Server:
I was like using this web server...
and like it was really fast....
and it was showing my website when...
Boop Beep Buh Deep Bip Bop...
It went poof! Gone! It was like...
Bummer
Re:Boa vs. Apache? (Score:2, Interesting)
Some other small (and embeddable) web servers to check out:
Device Management Framework: http://www.artlogic.com/dmf/ [artlogic.com]
This is a web application platform for making device management apps - say, for controlling a cable modem, printer, or industrial equipment. It supports some cool stuff including SOAP and XML-RPC.
GoAhead WebServer: http://www.goahead.com/webserver/webserver.htm [goahead.com]
This server is also embeddable but not as useful as the Device Management Framework. It's fine for serving a personal web site, or as an alternative to PWS.
performance info is useless (Score:4, Insightful)
Re:performance info is useless (Score:3, Funny)
Re:performance info is useless (Score:2, Interesting)
Re:performance info is useless (Score:1)
Re:performance info is useless (Score:2, Informative)
Re:performance info is useless (Score:2)
Works fine for me. C'mon, I can't be the only one who's set this up, right?
Re:performance info is useless (Score:3, Funny)
Re:performance info is useless (Score:4, Insightful)
Re:performance info is useless (Score:3, Funny)
Pardon me, but is sounds like you're suggesting we "use the right tool for the right job". Now I don't know if you're from k5 [kuro5hin.org] or where, but here on
Re:performance info is useless (Score:2)
Re:performance info is useless (Score:2)
Re:performance info is useless (Score:2)
If you had to restart the webserver manually on every reboot you're not very UNIX smart either. A cron job running every 5 minutes to see if the server is still up would have taken care of it.
Re:performance info is useless (Score:2)
But to answer your question, no I wasn't very UNIX smart at the time.
Re:performance info is useless (Score:2)
Bad analogy, wrong use of cliche. If I was unfamiliar with pupmkins and had a professional interest in maintaining apples, I would certainly want to hear about all the special features that separate pumpkins and apples.
I might even appreciate a comparison to lemons, even though I don't want to spend money on a Microsoft product.
Re:performance info is useless (Score:2, Insightful)
Re:performance info is useless (Score:2)
Thats all that matters
Pretty new? (Score:5, Informative)
Re:Pretty new? (Score:2, Informative)
Re:Pretty new? (Score:2, Interesting)
Odd comparison? (Score:4, Interesting)
Boa is much smaller than Apache. This seems like a good thing on the surface, especially for embedded applications, as was suggested in the article. But, Boa is slower and much less functional than Apache. They really aren't comparable servers.
Re:Odd comparison? (Score:2)
The bottleneck that I have is my DSL line uplink speed. My webserver can handle several connections per second, and it's only a Celery 300A with 64 megs of RAM.
uh (Score:5, Informative)
You'd think the submitter would at least read the article. It says right in there that it's been in development since before 1995, "In fact Boa is one of the oldest web servers in constant development".
Re:uh (Score:3, Interesting)
Re:uh (Score:2)
there are lots of options (Score:3, Informative)
No comparisons (Score:3, Interesting)
fnord! (Score:5, Informative)
Re:fnord! (Score:3, Informative)
(trailing slash)
Re:fnord! (Score:2)
That is not a very good endorsement of fnord. I'd rather use a web server that knows how to redirect "GET /foo" to "GET /foo/" transparently with http headers.
rws (Score:2, Informative)
Rich.
from the article... (Score:1)
What is this all about and why do they keep saying "In fact"?
Still slower than ZWS (Score:5, Interesting)
According to my tests BOA beats Apache.
BUT the ZEUS web server (www.zeus.com [zeus.com]) which is 'feature complete' (including mod_perl in version 4.2) still beats both of them.
Have a nice day!
Re:Still slower than ZWS (Score:5, Insightful)
Re:Still slower than ZWS (Score:3, Insightful)
Re:Still slower than ZWS (Score:3, Funny)
And Apache wins.
Re:Still slower than ZWS (Score:2)
Excellent for special UID use. (Score:5, Interesting)
I've used Boa in a number of cases where certain groups of CGI scripts need to run as a specific UID and I didn't want to use the SUID functionality of Apache. Because it is so lightweight, having a few of these hanging around for various citical system UIDs can really be handy, esp. if you have an aversion to using SUID wrappers and such. A good example is using Boa running as the same UID as the mailing list processor so you can have web administration of the list rosters. And the users don't even know about it because I use the ProxyPass directive to shuttle the requests from the standard port 80 up to the port on which Boa is running, so my logging is still centralized/standardized through Apache.
Boa is very cool. Kudos to the developers!
I'm unimpressed (Score:3, Informative)
Re:I'm unimpressed (Score:3, Funny)
Re:I'm unimpressed (Score:2)
Re:I'm unimpressed (Score:2)
Re:I'm unimpressed (Score:2)
Name space, name space, name space. That's what's wrong with it. I get really tired of writing function names that_seem_to_go_on_forever(). I mean come on. What is the point of array_push() why can't it just be called 'push()'? I know it works on an array!
Interpolation. Sometimes it works sometimes it doesn't its sort of half done. I can't count how many times my PHP program has crashed because I dared to put a variable inside double quotes. The behavior appears to be almost random.
Everything feels hacked, this goes back to the namespace issue. There is no logical way to extend PHP so new functions are just thrown into the core language. Many times they act differently than other similar functions (sorry I can't think of an example off the top of my head). Its like some people decided they wanted 'x' function and just threw it in without regard to its implementation. Things don't seem to be reused just new things thrown in. Like why can't we have a standard set of database functions where the database type you are using is declared? Nope, instead we have a whole set of mysql_* functions for MySql and another whole set of pg_* functions for Postgre.
And finally everytime there is a new release there is some change to the core of the language. So they have to maintain cruft to be compatable and things don't break. If they would improve what they have instead of constantly adding new things this problem would go away.
Other annoyances (mostly my opinion): Three ways to read variables from a form but still hard to make a program that can accept GET or POST method with the same variable names.
(item1,item2,item3) is not treated as a list or an array. I can't do ($fieldname,$fieldname2) = mysql_fetch_row()
Regexes use functions
Global variables, again my opinion but I would rather declare my varibles local rather than having to declare them global. It wouldn't be so bad if I could declare my global variables once at the top of the program but no
CPAN -- for all of Perl's faults it got CPAN right. PHP needs a standard way of adding modules to its installation (so they can be used system wide) and a good place to store them. You don't know how difficult it is to write a MIME complient message in PHP.
Finally I think PHP backwards... PHP is a language designed so that the data defines the program. Easy to slap together but difficult to maintain and very difficult to reuse code (I have to make tons of changes to the HTML page). I prefer to program so that my code defines my data. And I can give it new data to achieve new things or looks for a page or whatever
My two cents
Re:I'm unimpressed (Score:2)
What is the point of array_push() why can't it just be called 'push()'? I know it works on an array!
You know it works on an array because it's called array_push
Nope, instead we have a whole set of mysql_* functions for MySql and another whole set of pg_* functions for Postgre
You can always use ADODB.
(item1,item2,item3) is not treated as a list or an array. I can't do ($fieldname,$fieldname2) = mysql_fetch_row()
Well I've never used that syntax in *any* language! (must be a Perl thing?)
It wouldn't be so bad if I could declare my global variables once at the top of the program but no
This is down to personal taste. I much prefer having to redeclare in each function, as it's a lot safer since you don't have to explicitly declare local variables.
Personally, PHP does the job for me. It has its short-comings, but for small-medium size web sites you can't beat it imho.
I still wouldn't write a web-server in it though
Phillip.
Re:I'm unimpressed (Score:2)
one of the inconsistent functions you described is strstr(). most functions that search for something in a string (like ereg* and preg*) have the arguments set up so that the needle is first, haystack last. so you get used to using them like this('findthis', $inhere), but then with strstr you go strstr($whyisthisfirst, 'wtf that makes no sense')
just my own little two cents, keep in mind i like php and i love doing all kinds of neat shit with it like this [incise.org] and these [incise.org] and this [incise.org].
i've played with perl a tiny bit, and while there are things i like about it (=~ comes to mind, also the general shortness of functions and constructs versus php's long_ass_function_names() like parent post mentioned), it does feel very strange - and i question the usefulness (to me). i can pretty much do anything in php that i can think of, the language doesnt hold me back very much or at all. i can write shell scripts in it too - of course people say "no no!! php is for webpages!!", but it's as fast as anything else, and i'm familiar with it so i can be very productive.
Re:I'm unimpressed (Score:2)
Let me put in a plug for bozohttpd (Score:5, Informative)
Small footprint, pretty functional: HTTP, CGI, etc. It's referenced in the BOA docs.
Anything in between (Score:2, Interesting)
Re:Anything in between (Score:3, Informative)
Re:Anything in between (Score:2)
This comes down to.. (Score:3, Interesting)
But today, when 90% of the stuff served (besides images) by web servers are dynamic content, why does a web server like this get a headline?
Ok, I know it does CGI, but come on, CGI is as dead as Ultrix.
I'm not trying to let this project down. I'm sure there are plenty of happy users that don't need the "bloat" associated with Apache, IIS and other servers--but I'd be surprised if they did anything more advanced than the occasional photo album homepage.
We all use bash (mostly). Not because it's the smallest, but because it does everything we've come to expect from a shell.
To me, Boa seems a lot like the effort to rewrite the unix utilities in asm to reduce size. It's a challenging excersise, but in the long run it's going nowhere.
In praise of CGI (Score:2)
CGI is as dead as Ultrix.
Anyone ever noticed how dynamic pages are much more likely to get /.ed than static ones? There are uses for PHP/MySQL or whatever, but fast it aint, and a lot of the time it seems to be used because it's A Good Thing rather than because it is actually necessary.
For relatively simple tasks, a standalone CGI script is always going to be faster than a generic DB solution. For really complex tasks, CGI provides far more flexibility. For a lot of jobs in the middle, a DB-driven embedded scripting solution may be just what is needed, but there's still plenty of work for CGI at the edges.
One of my programs writes static pages that you can edit via a web interface. I haven't load tested it yet, but I'd be willing to bet that Apache serving static pages uses far less resources than Apache building PHP/MySQL pages. If BOA will serve static pages faster than Apache, the performance benefits of producing static pages must be even clearer.
Re:In praise of static (Score:2)
I do like the features of Apache, for example when the site needs PHP+MySQL. But it's the right tool for the right job. And I keep that 486 from polluting the Earth on an 'acid trip' to China.
Re:In praise of CGI (Score:2)
CGI stands for "Common Gateway Interface". It provides a standard by which http servers can communicate with external programs... basically, anything other than static HTML files is "CGI"..
That being said, your post makes no sense.
Re:In praise of CGI (Score:2)
CGI stands for "Common Gateway Interface".
Yes, but the common usage of the word has moved on a bit. Just as, although PHP stands for Personal Home Page, it gets used for non personal websites, and not just on home pages. I think my use of CGI to mean 'CGI scripts in languages such as Perl' is pretty common practice.
That being said, your post makes no sense
True, but in that case half the posts on this topic and some of the original article are a bit hazy too. When the posting to which I replied says 'CGI is as dead as Ultrix', because of the wonders of dynamic content, he is either talking rubbish or using CGI in the same way as me.
Re:In praise of CGI (Score:2)
Re:In praise of CGI (Score:2)
I'm sure you're right, but I seem to have a wider range of adjectives at my disposal :-)
Re:In praise of CGI (Score:2)
Why bother with writing your own HTML to disk?
Referencing? Some dynamic content seems to be virtually impossible to reference effectively. Also, if each page changes once a month on average, your solution still runs the db about 6000 times more often than mine. And if the database interface is public, people can try to break it, whereas it is hard to make a page of static html malfunction.
Re:This comes down to.. (Score:4, Insightful)
I agree that this will never replace Apache. However, from what I have read about it so far, it was never meant to.
I disagree on the part that this is "dead". Just like Linux, web servers are going in two different directions. The first, and most common is serving web pages for web sites as we think of them today. Public sites either giving information or selling a product.
There is a new market emerging though, that Boa will be well suited for. The advanced-embedded market. I am not talking PIC processors or having a web server in a lightbult, but the more advanced devices that need a slightly more advanced webserver, without needing things like virtual hosting. This type of web server should do very well on home routers and firewalls and such devices.
Re:This comes down to.. (Score:2)
BTW, just to keep this vaguely on-topic, I've used boa for the remote upload / setup interface server in my home-brew car mp3 player since 1998. "A new webserver", bah.
Re:This comes down to.. (Score:2, Informative)
<plug>
Very true. That's why you need a web server like rws [annexia.org] which is tiny, and loads C-based CGIs into memory, and has a full database layer.
</plug>
Rich.Re:This comes down to.. (Score:2)
My first thought is for serving images. Our server is quite heavily loaded, and it seems a waste that Apache is being used to serve up images (85% of our traffic) which don't use any of its capability.
Phillip.
Stress Test (Score:5, Funny)
Apparently, its load handling just isn't up to the task yet.
slashdot effect and Boa (Score:3, Informative)
www.boa.org is hosted at no charge by Russ Nelson. I don't thank him often enough for this help. He provides similar service for selected other community projects, too, check out http://www.russnelson.com/
I also don't hold it against Russ that he doesn't use Boa for his web server. He has other things on his mind than learning about one more piece of software; he used Apache before he hosted Boa, and he continues to use Apache. It does the job for him. If the site acts slashdotted, knowing Russ, I suspect his pipe is clogged, and there's not much he can do about that.
So if y'all want to slashdot a Boa server to see if it holds up, pick something other than www.boa.org. There are plenty to choose from, including some that wouldn't even notice the slashdot effect.
Re:slashdot effect and Boa (Score:2)
-russ
Yeah, we only need one webserver, (Score:3, Insightful)
Pretty nice server... (Score:5, Funny)
Re:Pretty nice server... (Score:2)
Where do people get stuff like this? (Score:5, Informative)
It's not new. As the linked article says, it's been around since 1995, so it's almost as old as the web.
>and little known
I link to it from the thttpd page, which gets a quarter million hits per month, so I guess I've done my part to make Boa better known.
>it is only CGI-based.
I don't even know what this means. It serves files using select() and non-blocking I/O, not CGI. It implements CGI for external programs. Perhaps the author meant that CGI was the only option for external programs.
>preliminary benchmarks against Apache and thttpd
As others mentioned, no, there are no Apache or thttpd benchmarks in the article. No doubt it's much faster than Apache and about as fast as thttpd, but experience shows that very few people care about web server speed.
>Boa (running under Linux)
I keep telling people that if they are one of the few who care about performance enough to run a specialized NBIO web server like thttpd or Boa or mathopd, they shouldn't throw away half their performance by running Linux. Use FreeBSD.
Re:Where do people get stuff like this? (Score:2)
Indeed, the original article seems to have been written by someone who literally fell out of the sky and decided that he needed to write a review of webservers.
I'm not sure about how few people know about boa and thttpd, but neither of them are new and both of them make excellent webservers. I ran two virtual hosted (admittedly low traffic) websites using thttpd for years on a P5 133 with only 32M of memory. It's dead simple to set up,
efficient and fast. I also evaluated boa, and found it to be excellent as
well, I picked thttpd because I liked its virtual hosting a tiny bit better and thought I might make use of throttling at some point.
I do run FreeBSD too. While I'm not sure about
the relative speed of both, I wouldn't dismiss
Jef's comment out of hand either, he's done
benchmarking on a wide variety of systems as part
of his thttpd work.
Hydra: a Boa based web server (Score:5, Informative)
[ http://hydra.hellug.gr ] . It is based on boa.
Here is some info from the site
Hydra is a high performance multi threaded HTTP web server. Unlike traditional multi threaded web
servers, Hydra uses a constant, but configurable, pool of threads, and each thread can handle several
connections by multiplexing the connections. This may remind you a non blocking server, and this is
true, but Hydra has not the killing limitation of a non blocking server, which is that they cannot use
more than one CPU. Hydra will take advantage of every available CPU in a system.
It supports many thingsa that boa doesnt, like
virtual hosts
cgi 1.1
SSL 3.0/TLS 1.0
PHP and other scripting languages.
Web Server Survey - October 2002 (Score:5, Informative)
WebServer Sites
Apache 21258824
Microsoft-IIS 10143822
Zeus 711957
unknown 496657
Netscape-Enterprise 465337
Rapidsite 411267
thttpd 322974
.
.
.
.
Boa 463
Re: Web Server Survey - October 2002 (Score:2, Insightful)
Speaking of Web Servers... (Score:2)
Re:Speaking of Web Servers... (Score:2)
ini_set('zlib.output_compression', 'On');
ini_set('zlib.output_compression_level', '3');
It will gzip your pages as they leave the server. To save on cpu, I cache my HTML pages... then also system() call to gzip it in the same dir. I then:
if (strstr($HTTP_ACCEPT_ENCODING, 'gzip'))
{ serve_gzipped_file; }
else { serve_uncompressed_html }
It means the server doesn't need to gzip the file on every single request.
Phillip.
Re:Speaking of Web Servers... mod_gzip (Score:2)
I was hoping for untaring a
I guess Ill have to do it the old hard fashioned way
"Medium-range" system, ha! (Score:4, Insightful)
Before this, I used to host a medium-traffic database-driven website on an old Pentium 166 with 64 megs of RAM running -- get this -- Windows 2000 Server. And it never blinked either (except when I got Slashdotted once; that really hurt).
Anyway, in an article about a great low-overhead super efficient webserver like Boa, I'd really like to see benchmarks on systems that are actually low-end, as opposed to systems that are low-end if your other server is a quad Xeon with 16 gigs of RAM.
I wrote boa... (Score:3, Interesting)
Fascinating to see something I wrote almost ten years ago turn up on slashdot as "new."
I wrote it on a dare, sort of. There weren't any single process web servers at the time and a friend of mine said "it shouldn't be that hard..." I named it boa because my pet at the time was -- wait for it! -- a boa constrictor.
Gee, that's it. Yay for open source living ten years on its own.
-- psp [livejournal.com]
Interesting... (Score:2)
I thought the explanation for the name was here [tuxedo.org], where boa is roughly a synonym for fat pipe -- something you need a fast server to saturate.
Boa is a great platform for embedded servers (Score:2)
on the Axis webcam, which is a webcam running Linux in 8 MB of RAM and 2 MB of Flash ROM. It
was impressive to see such a small footprint web server being used in production for an embedded appliance, running Linux.
Just last week, I wanted to implement a custom server for my house; I have a Model 28 teletype, which I wanted to hook to the ethernet. I took
an old PC, and downloaded a copy of Boa. I then added code to it's main select() loop to service the serial port connected to the teletype. Now I have a state of the art ethernet-to-teletype gateway machine. It was easy to do because Boa is
simple and easy to understand. So people whining about which web server is "faster" are missing the point entirely; Developer's time is worth much more than CPU time in most situations. And developing using Boa's source base was the best option for what I needed to do.
Free Software! YEAH!
Re:Disappointing (Score:2, Insightful)
Re:Disappointing (Score:5, Insightful)
Wait a minute, who is "we"?
I mean, no offense, but who the hell are you to tell a programmer what she should work on? Oh wait, did I say "no offense?" I meant "plenty of offense." As long as the Boa guys are enjoying what they're doing, more power to them. Now, maybe you're whining about Slashdot writing an article on it, but that's hardly the Boa guys fault.
And, frankly, you sound like the type of person that's going to find something irritating to whine about no matter what.
Well, maybe some of us want to do work because it's fun, and we're interested in it, rather than because some random internet bozo thinks he 'needs' it.
Yeah, I can see that -- you're already trying to impose your own narrowminded "managerial" (your label, not mine) viewpoint on the people that are trying to get work done, and touting your own superiority. Whooooo, how innovative and revolutionary.
So why don't you just crawl back into your hole and write whatever code you want to, instead of whining that other people are working on things that don't benefit you personally?
Re:Disappointing (Score:5, Insightful)
Maybe...
OK, so a lot of open source projects start up to fill a gap and a lot of open source projects start up to replace a proprietary or expensive solution, but a lot start up just to try and do something in a new way or innovative way, to experiment or to learn. It's the hacker way.
OS is so productive becasue of this hacker attitude, stifle it at your peril.
Forgot one (Score:2)
OSS is a great way to learn programming and practice your skills.
Re:Disappointing (Score:3, Insightful)
Even knowing a webserver exists that is 1/10th the size and runs in 1/10th the memory can give pause to thought, and keep the knowledge open that things can always be made smaller. In 1990 the entire internet was run on machines rarely quicker or more powerful than 386s or 68030s - it would be sad to see a culture of "You can't have a server online that's under 500mhz and a gig of ram" develop - without tiny coding projects like this, that's all too possible.
Re:Disappointing (Score:2)
Did it ever occur to you that maybe, just maybe, the Boa folks don't give a damn about your so-called "revolution"? That maybe they're writing code because they want to? Because the *like* to? Because it's *fun*? Frankly, this whole talk of "revolutions" and the like sickens my stomache and degrades the old hacker mentality of doing stuff because it's enjoyable and interesting. Hell, I've written plenty of code and released it for free, but I don't do this because I think I *should*. I do it because I hope it might be useful to someone, and because I enjoy creating new things, and learning in the process. But now, we have people like you, who attempt to politicize this so-called "movement". Well, I say f*ck your movement. I'll work on what I want to work on, and code what I want to code, and if people find it useful, great, and if not, well, so it goes. But I'll be damned if I'll write code because someone else feels I should for the "greater good".
threads v. multiplexing (Score:4, Interesting)
See Non-blocking I/O is good [acme.com] for more background on what multiplexing is and why it is good.
Re:threads v. multiplexing (Score:2)
Re:threads v. multiplexing (Score:2)
See also my recently-posted list of links [slashdot.org] to articles on my own website discussing these very matters.
Re:Apache threads (Score:2)
means a select(2) loop in a single-threaded server
rather than having a separate thread or subprocess
for each connection.
Re:Don't forget D. J. Bernstein's publicfile (Score:2)
Bernstein is an asshole and his software sucks.
Re:oh shit (Score:2)
Hmm.. just because it's on /. doesn't mean it's suddenly trendy. Use
the tool that's the best for the job, not the one that is trendy. In
fact, by going the Linux way you've already gone against the
mainstream OS which is Windows, might try and keep up the attitude.
Besides, I used Boa over three years ago so I'm more trendy than you! ;-)
Re:Surprisingly, www.boa.org is running Apache (Score:2)
-russ
Re:Boa is used for camera appliances.. (Score:2)
for a mining job a while back we had to do some development due to a busted panasonic pan tilt head driver in the axis box. Unfortunately AXIS where not forthcoming in the driver code (grrr) so we had to wangle our own. Ladies and gentlemen;- I wrote the driver in PHP(!) , and consequently the damn boa server directly controled the servos via the serial port on the unit.
Most completely impressed (except for the closed source axis driver... grrr).