Slashdot Mirror


Apache 1.3.x vs. 2.0.x: The Debate Returns

darthcamaro writes "internetnews.com is running a story about the new Apache 2.0.49 release. They actually got a hold of a pair of Apache Software Foundation members and got them to speak out about the 1.3.x vs. 2.0.49 debate! Also Apache Director Sander Striker told internetnews.com that he expects the Apache 1.3.30 release cycle to begin this week... I still use 1.3.x because I've been using the Apache 1.x series 'forever' and I've never found a solid reason to change. Also, as pointed out in this article, the official PHP documentation clearly states, 'Do not use Apache 2.0 and PHP in a production environment neither on Unix nor on Windows.'"

22 of 95 comments (clear)

  1. PHP link is for Canada Mirror by a.koepke · · Score: 4, Informative

    The PHP manual link posted is a direct link to one of the Canada mirror servers. The PHP site is mirrored around the world and it automatically selects your nearest mirror server.

    Use http://www.php.net/manual/en/install.apache2.php instead so that it can select the nearest mirror server and save us slashdotting this one Canadian server :D

    --


    (\(\
    (^.^)
    (")")
    *This is the cute bunny virus, please copy this into your sig so it can spread
  2. Re:I run apache 2 and PHP in production by jmt9581 · · Score: 2, Informative

    From what I understand, It's all about the performance. Apache 1.3.x supposedly has better performance with PHP when compared to the corresponding Apache 2.0.x release.

    --

    My blog

  3. Reference a little stale by ttfkam · · Score: 2, Informative

    It's almost two years old.

    Taken with a grain of salt of course, but I heard that the issue was about 2.0's use of threading whereas 1.3 was always a prefork model. mod_php made certain assumptions in their implementation for the Apache 1.3 version that didn't turn out to be threadsafe -- an obvious problem for Apache 2.0. But then I would tend to say it was a PHP problem rather than an Apache2 problem.

    It doesn't surprise me that 1.3 would be the performance winner at first. 2.0 was concentrating efforts on the worker (multi-process/multi-thread) model. Then again, it's been two years since that performance reference was written. Is the performance gap still that wide?

    --

    - I don't need to go outside, my CRT tan'll do me just fine.
  4. i've been using both by dcocos · · Score: 3, Informative

    I've been using both 1.3.x and 2.x with Tomcat and I have yet to really notice a difference except that the config files for 2.x seem to be laid out in a more sane order though it took a while to adjust. (I can't speak to PHP usage as the only time I touch it is for running squirrelmail)

    1. Re:i've been using both by dcocos · · Score: 2, Informative

      On the Debian box I'm using 1.3.29 with mod_jk 1.2 with Java 1.4.0
      on the Gentoo box I'm using 2.0.48 mod_jk2 2.0.2 with Java 1.4.2_04

  5. Re:1.3.29 by nthomas · · Score: 4, Informative
    The one thing that is pushing me to upgrade is Subversion. According to Subversion's website, you need a 2.X binary to run the Apache plugin. This may be the first really big push for 2.X.

    As another user pointed out, you don't need to have Apache 2 running as your webserver if you want to access Subversion. You can do one of the following:

    • Run Apache 1.x as your webserver on port 80, and then have Apache 2.x running side-by-side as a separate server and have it listen on port 3690, the port that IANA has reserved for the Subversion protocol.
    • Instead of Apache, run the lightweight Subversion server svnserve. It's quite simple to set up compared to Apache, but can only grant blanket read/write permissions. Also, you can't fine-tune permissions on a per-directory basis like you can with Apache.
    • If you have pre-existing accounts on your system, you can tunnel through ssh via the svn+ssh://host/path/to/repo pragma which will authenticate itself via ssh and use the Unix file permissions on the repository.
    • If you are the only one accessing your repository, you can even use the file:///path/to/repo pragma and forego a server altogether.
    Each method has its benefits and disadvantages, you will want to evaluate all of them and choose one best suited to your business logic. Also, you definitely want to read over the upcoming O'Reily book Version Control with Subversion (see Chapter 6, "Server Configuration"). Good luck.

    Thomas

  6. Re:I've been running PHP/Apache 2 for a while... by T-Ranger · · Score: 3, Informative
    There are regular reports on the Horde/IMP lists that PHPs gettext component is broken. As the other poster says, this is some how thread related; PHP not being thread safe. There is at least one report of languages that change within a single page... But it seems that this only happens under heavy load.

    It would be interesting to know if PHP 5 will be thread safe, and this usable in production with Apache 2.x

  7. Re:I've been running PHP/Apache 2 for a while... by Inominate · · Score: 2, Informative

    PHP will probably NEVER be thread safe.

    Even if PHP were 100% threadsafe, it generally uses too many libraries for it to be practical to make sure they're ALL threadsafe.

  8. Re:I've been running PHP/Apache 2 for a while... by sumbry · · Score: 5, Informative

    Even if PHP were 100% threadsafe, it generally uses too many libraries for it to be practical to make sure they're ALL threadsafe.

    Actually the PHP core is 100 percent threadsafe now, it is only specifically the external libraries which aren't.

    If you use PHP w/FastCGI support you wont run into these issues. If you only compile MySQL or Postgres support into your PHP you wouldn't either. But many users frequently also compile in other external libs for things like graphics generation, url manipulation, etc and its these libraries which aren't thread safe and specifically can cause problems in high use environments.

    While you could specifically use PHP and Apache2 in total prefork mode, this basically makes it run exactly like the 1.3 series, so then the real question is what's the point of upgrading at all and not just sticking w/1.3?

  9. RedHat ES 3.0? by rawg · · Score: 2, Informative

    I'm using RackSpace and the only way I can get PHP 4.3 and Postgresql 7.4 is if I use RedHat ES 3.0. It uses Apache 2. The only other option is to use PHP 4.1 and Postgresql 7.1. Stupid RackSpace. I would have used FreeBSD except they don't support it as they do with RedCrap.

    --
    The above is not worth reading.
  10. Re:I've been running PHP/Apache 2 for a while... by OC_Wanderer · · Score: 1, Informative

    I've been running it on WinXP without any problems either.

    --
    -- There is no spoon. Only fork.
  11. Re:I've been running PHP/Apache 2 for a while... by mivok · · Score: 2, Informative
    While you could specifically use PHP and Apache2 in total prefork mode, this basically makes it run exactly like the 1.3 series, so then the real question is what's the point of upgrading at all and not just sticking w/1.3?


    Because some servers like the subversion apache module require apache2, and I'd like to not have to run both apache1.3 and 2 in parallel. I am curious as to why the php documentation doesn't mention that using the prefork mpm and php would work fine however.
  12. Re:I've been running PHP/Apache 2 for a while... by gabe · · Score: 3, Informative

    Since PHP 4's inclusion of the Zend Thread-Safe engine, PHP itself has been thread-safe. It is the third-party libraries that extensions link to that are non necessarily thread-safe.

    There's a list of libraries and whether or not they are known to be thread-safe here: http://httpd.apache.org/docs-2.0/developer/thread_ safety.html#liblist

    --
    Gabriel Ricard
  13. Mason does work under Apache 2 by simonff · · Score: 3, Informative

    Check out the guide. I've been running it like this for over a year.

  14. Re:I'll move to 2.0.x when... by Jerf · · Score: 3, Informative

    It can be done, but it is a little touchy. Check the Wiki.

    Once I've gotten it running, though, it has worked correctly, so the hard part seems to be just getting it running. I'm actually using it in a 'production' environment, too, perhaps a little bravely, but it's better then the alternatives.

  15. Re:I've been running PHP/Apache 2 for a while... by xneilj · · Score: 3, Informative
    The subject of Apache 2/PHP was raised in the Slashdot discussion of the PHP5 beta RC a few days back. One comment from a PHP dev (Rasmus) was:

    Apache2 has a number of different modes it can work in. These modes are called MPM's. The default MPM is called Worker which is a multithreaded model. PHP, mod_perl, mod_python, and any other similar technology which links directly into the httpd processes will need to be perfectly threadsafe and reentrant to work effectively with a threaded Apache2 mpm. This is doable for the core of PHP, but there are literally hundreds of 3rd party libraries that can be linked into PHP and nobody whether or not these libraries are threadsafe. And figuring out if a specific library is threadsafe or not is non-trivial and it can very from one platform to another. And just to make it even harder, this stuff will appear to work fine until you put it under load or hit very specific race conditions which makes it nearly impossible to debug.

    So, since we can't tell you for sure that a threaded Apache2 mpm + PHP will work we do not suggest you use it for a production server. And since we can't know for sure, none of the main PHP developers use this combination for our own servers which compounds the problem because it is not receiving anywhere near the amount of realworld testing required to work out all the little issues above and beyond this threading unknown.

    There is an Apache2 mpm, called "prefork", which isn't threaded and basically makes Apache2 look like Apache1. But hey, we have a very good server already that looks like Apache1.

    In the end I don't see Apache2+PHP ever becoming a production platform with the current architecture. The only way I see it ever working is to pull PHP out of Apache and use a fastcgi approach. Or, with time, perhaps we will learn how to make sure a library is perfectly threadsafe and safe to use in a multithreaded Apache2.

    For now, I really see no reason not to simply use Apache1 if you want a robust, fast and stable web server.

    One of the posters found this more recent comment from Rasmus as well:

    We are not talking about just Apache2 here. We are talking about Apache2+an MPM+PHP+3rd Party Libs. The folks at apache.org are only concerned with Apache2 itself, and for serving up static files it is better than Apache1 in many respects. However we have to worry about a lot more stuff here. In fact, we couldn't care less about serving up static files. The main issues as I see them are:

    1. Thread safety issues. - It is very difficult to track down threading problems and we don't have decent tools to help us. The thread safety of many 3rd party libraries are unknown quantities and can depend on the OS, libc and even compile flags. - Many distributions seem to ship with the Worker MPM as the default and that is the MPM that gets the most attention. This is a hybrid multi-process, multi-threaded MPM.

    2. You can eliminate the threading problem by running the prefork MPM which effectively makes Apache2 behave just like Apache1 in the way it forks processes and serves one request at a time per process. Issues here: - Apache2 itself is rather fringe still. It has approximately a 5% marketshare vs. 65% for Apache1 at the time of this and out of that I would guess the majority are running the Worker MPM. So we are talking about a fringe MPM in a fringe server. This means it has not had anywhere near the attention from people running large production web server farms that it needs for me to comfortably say that this is a solid piece of code with all the kinks worked out. - The benefits of moving to Apache2+prefork are questionable. The new filter API would be one of the benefits, but it sti

    --
    rm -rf / is the evil of all root
  16. Re:I'll move to 2.0.x when... by gtrubetskoy · · Score: 2, Informative

    mod_python has been on Apache 2.0 for almost 2 years now.... :-)

  17. Re:I've been running PHP/Apache 2 for a while... by Knowbuddy · · Score: 4, Informative

    Just to be the voice of dissention ... I'm apparently the one person in the world for whom the PHP+Apache2 combo doesn't actually work right. Yes, it mostly works, but I'm constantly having to close out the windows that pop up when a thread goes boom. Yes, I am running it on XP (with all of the necessary service packs and hotfixes), but that shouldn't invalidate the fact that PHP+Apache2 isn't production-quality stable. And yes, I am 100% sure it is PHP causing the problem, as the errors only started when I started using PHP, and they increase as I convert more and more of my site to PHP.

    Now, if I'm getting all these errors, why am I using it? Because it's still better than the alternative. When any DLL goes pop under IIS you get really flaky and esoteric things that start happening. Under Apache2 it just nukes a thread, which Apache2 diligently respawns and goes on with life. I can deal with clicking OK on a dozen windows a day if it means I don't ever have to worry about restarting my web service.

    PHP+Apache2 isn't perfect, but it's good enough for what I need.

  18. Re:Modules! by Raxxon · · Score: 2, Informative

    Just was tinkering with mod_frontpage and it's now basically Apache2 only. They still have support for 1.3x, but it's being phased out from what I can tell.

    And installing it under 2.0.49 wasn't too bad after I realized that it REQUIRES the 'bin' user. :p It runs as well as anything MS related can under linux... ;)

  19. Re:1.3.29 by Anonymous Coward · · Score: 1, Informative

    don't run apache2 in parallel on that port - that port is reserved for the svnserve _protocol_, and clients will get all sorts of confused if you try to connect with a svn:// url to it.

    You can also run apache2 listening only on localhost, and set apache2 up to proxy to the apache2 instance (if you don't trust exposing apache2 at all)

  20. How to use Apache 2 with PHP by dananderson · · Score: 2, Informative
    Apache 2 works for me with PHP. YMMV. The trick is to not use an external library that is thread-unsafe. I have instructions and troubleshooting information at http://dan.drydog.com/apache2php.html

    For Redhat 9 and probably other distributions, Apache 2 and PHP are supported out of the box.

  21. Re:I'll move to 2.0.x when... by Shipwright · · Score: 2, Informative

    I have been using it for a year or so too but the same Perl, DBD::Pg and HTML::Mason code that ran for hundreds of days of uptime in 1.3 now have major memory leaks that freeze the machine unless I reboot daily. Luckily I have 9-5 East Coast users so I can get away with it.