It is well known around here that I'm a FreeBSD bigot^H^H^H^H^Haficionado. I've also built a web services company on the strength of FreeBSD. In a nutshell, FreeBSD works, works well, and is constantly being updated.
As
idsfa noted, there are times when it's not the leader in one area or another, but I can say, from 9 years of experience, including knowing quite a few of the developers personally, that FreeBSD is a really rocking choice for any sort of server application. I don't think there's another OS that handles single-processor task loading and switching as well on this planet, and that's what 99% of us run for our servers. I have heard that Solaris is still ahead in multiprocessing, but it is deficient in many other areas including ported utilities.
My experience is that OpenBSD doesn't have enough of a team to do more than concentrate on a few areas (OpenSSH and pf come to mind as recent examples). They do very well in those areas they tackle, and we all benefit from their work, but the OS as a whole is inconsistently improved.
The various Linux derivatives have one big advantage, and that's commercial support, but that's only an advantage if you care about desktop apps. My servers don't care about the latest FLASH player or game video driver. ;-) They are at a distinct disadvantage when it comes to heavily loaded Internet servers. Even with the latest round of fixes they've done based on the Coverity reports, there are still numerous design flaws and tradeoffs in their scheduling and virtual memory subsystems. Unless you are adamant about quotas and journaling filesystems, FreeBSD is a better choice than any other system.
It's also very easy to tune. It is important that a complex web system reside on a performance-tuned system, and tuning FreeBSD, MySQL and Apache is a science that's really useful to learn.
Finally, FreeBSD mostly stays true to the original BSD 4.4/SunOS 4.1 syntax, directory conventions, and utility parameters. Where they don't, it's flat-out better. The new bootup rc strategies are coming together very nicely, and they're being consistently implemented. Likewise the sysctl tuning variables are very easy to use although the documentation does not keep up well enough.
As for mod_perl, with the ports collection, it "just works". I have mod_perl set up with HTML::Embperl and Apache, and I'm just sitting here sipping cream and meowing happily. :D
Don Wilde
"There's more than one level to any answer."