Apache Server Nears 2.0
An Anonymous Coward writes: "The Apache httpd project has released a new beta of their apache 2.0 server (v32)". For those who have not been following the 2.0 development, this is the third beta that has been produced. The new version of Apache sports the new APR API and a new method for filtered I/O, and has been rewritten to make use of a hybrid thread/process model. With Covalent already selling a commercial version of 2.0, hopefully we will see a full release of the open source version in the near future.
Personally, I don't mind waiting on the Apache project to take their time and do it right. I believe 2.0 isn't bloatware, but a far more modular and extensible version of the worlds fav. web server. Personally I've been waiting for a WHILE to start using it. I'm not sure if PHP4 will compile against it yet. Maybe out of CVS it will.
With the new threading, it should manage to push out pages a lot faster under load, and make better use of the processors. Might have to go download today. Here's a project for those of you bleeding edgers out there. I've yet to manage this one myself:
Apache 2.0 + mod_perl + php4 (with support for MySQL 4.x) + mod_ssl.
I don't think non-CVS PHP4 will handle MySQL 4.x, but perhaps there are others that know how.
Back to topic, way to go guys!!
-What have you contributed lately?
Many sites use Apache as an application server or to serve dynamic-content; e.g., by using mod_perl (to deliver blazingly-fast dynamic content generated by Perl scripts), or as a flexible and solid front-end to Java servlet engines like JServ and Tomcat.
And far from being bloatware, Apache has (at least during 1.*) gotten more modularized over time, making it easier to fine-tune logging, access control, URL rewriting, etc, etc. I don't know squat about 2.x, but I expect good things.
Just the $0.02 of a Perl/Java hacker who uses it extensively...
I'm a bloodsucking fiend! Look at my outfit!
I've been using Apache 2 on Linux and FreeBSD for about 2 months now (got into it while playing around with Subversion, another project that seems to be making excellent progress), and IMHO it is really going to rock the server world. Some major plusses:
People have been complaining that Apache 2 is slow to come out, but from what I've seen lurking on the mailing list, it's because they want to ensure the quality of this release. They've also been talking about how they want a lot of beta testers, because (<rumor mode on>)they want to release soon, maybe even from 2.0.32. So get out there and beta test it!
---
Have you crashed Windows XP with a simple printf recently? Try it!
This is usually the case when you are serving static pages for a page that is viewed one time a day.
However, it gets complicated when you serve pages that are dynamically generated for various users. You want to be able to pass content of a file through various modules. You can tell that you want the page to go through mod_perl and then through SSL modules. You can also stack any modules in between.
The new version makes it easy.
Of course there is a lot of other things besides the "reading and shooting" files (IPv6, web caching, etc).
POSIX.1 specifies sleep(3) be both thread-safe and cancellation-safe.
I've been following performance results for 2.0, and wanted to let folks know that it doesn't seem clear to me that there is this huge performance gain waiting to happen.
l has some 2.x v. 1.x results.
http://webperf.org/a2/v29/Apache2_26-Nov-2001.htm
Love to hear the lowdown on performance advantages of the new Apache from someone in the know or someone who has done some actual testing.
Also, PHP/Apache perl/Apache integration are probably very high on many folks lists, what is the status of those two vis a vis apache?
When did FreeBSD get 100% compliance?
In addition, ngpth has been accepted by Linus and they are very close to 100% compliant as well as providing for M:N mapping to scale on multiple processors, and to give programmers choice of kernel or userland threads with standard calls. BSD is great and all, but you guys do way too much chest-pounding.The wheel is turning, but the hamster is dead.
The API's are not yet fixed, so they tend to break. You can probably compile CVS of PHP to the current beta Apache 2, but the next time they change something PHP will most likely track the CVS change, leaving the beta out in the cold again.
I managed to get mod_php + Apache 2b28 coexisting, but it liked to segfault a lot (even when idle) and always ended up eating 100% CPU. I even managed to add Zend 2 (next-gen PHP engine) to the mix, but, well, I haven't seen Apache fall over so much since I got PHP 4.0.0 to generate 50,000 internal errors on a single script.
I've been looking forward to the perchild MPM. It can run different server processes under different UID/GIDs. This is important because mod_{perl,php,python,snake} run in-process with the Apache server. It's the only way to run them securely for different people other than a completely seperate webserver for each person (with its own IP address, configuration file, memory footprint, etc.)
But perchild doesn't really work:
So, Apache 2.0 may be promising in the future...but when a feature I've been looking forward to for a long time is broken, I'm kind of disappointed.
> POSIX.1 specifies sleep(3) be both thread-safe and cancellation-safe.
I don't think he's talking about sleep being thread-safe. I think he's talking about using sleep rather than a condition variable and a while loop to wait for access to a shared resource. The problem with using sleep is that it's entirely dependent on system load/ speed/ alignment of the moon. Code like that assumes that if it waits a certain amount of time, the resource will be free.
Imagine checking to see if a pool is dry, noticing that it is, coming back later and jumping in without looking. It might be full later, but it's much better to keep looking and not jump until the pool actually has water.
This type of thing is especially hard to debug when you upgrade your hardware and your software mysteriously fails. Suddenly, you're not sleeping long enough to get an exclusive lock on a shared resource.