Jump to content

Apache or Nginx?


HowdyPython

Recommended Posts

The big thing with SSD is getting a lower disk TPS rate.

 

I personally like to setup Apache to run on port 8080 and Nginx to run on port 80 to act as a reverse proxy to lighten the load on Apache. I also setup and tune php apc.

 

This setup has allowed me to run some high traffic sites on really low cost boxes.

 

 

Link to comment
Share on other sites

With a standard mod apache worker setup, apache forks child processes to handle requests. Of course you can see this doing a ps aux | grep apache or similar command, or you can run top and take a look at what is happening. Depending on the size of memory allocation of your php scripts, you may find that as time goes on, you get a set of apache processes with a significant memory footprint. It really depends on your code. In order to make this efficient apache will continue to reuse these child processes for a certain number of requests before the process is killed and a new one is created (this is configurable of course). This is a reliable and efficient configuration, with the downside that requests for static resources like images, css and .js files also have to be served by apache processes that have memory footprints reflecting their creation to serve a php request, even though (for that request) all that extra memory is not used. The net effect is that total memory becomes a fixed resource that limits the amount of requests the server can handle.

 

In comparison, nginx with php-fpm will utilize php-fpm to serve the php requests, and of course there is still the same php memory issue, but as nginx is not allocating the php memory, it is much more efficient from a memory utilization standpoint, when serving the static elements of your site.

 

As will pointed out you still will want to use apc in either scenario, so that your php scripts are coming out of a shared memory cache rather than being compiled on each request.

 

Alternatively, you could do what he suggested and run nginx and apache (it's similar to nginx - php-fpm) but I lean towards using the php-fpm application server setup, since that's essentially what you are really doing in that sort of setup, but if you're more comfortable with apache, as he stated, it's a proven setup to have nginx proxy the requests for php scripts through to apache.

 

If you do stay with apache it is important to go through the list of default modules and disable every single one that isn't absolutely essential, in order to minimize the amount of memory apache requires. This is an important first step, even if you just want to stay with apache for whatever reasons, in order to get the maximum capacity possible.

Link to comment
Share on other sites

The main issue I've had with switching to nginx is apps with extensive use of .htaccess/mod_rewrite rules can sometimes be a pain to convert over to the proper nginx configuration. If that is not an issue for you, then nginx + php-fpm seems to be a pretty nice setup.

 

Apache + worker mpm + php-fpm is a decent setup as well. You separate apache from PHP so static resources do not incur any overhead from PHP, and the worker mpm is a mix of threaded and multi-process setups so rather than one process per request you only need a couple processes, each of which has several threads for processing requests. I've been going this route as it seems to provide about as good of performance as nginx + php-fpm while still maintaining .htaccess compatibility.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.