Skip to main content

How to control high traffic load on Apache servers : optimization performance of APACHE2 & PHP-FPM


Everyone handle high traffic loads on Apache server. During down-time they forget to check server memory. Apache not used lot of memory still server not responding. All time we restart Apache service and all things will start working good.

I also faced same issue numerous time and all-time used same solution : Restart Apache.

After lots of research and reading found one solution. In this blog you see step-by-step guide to apache2 performance settings.

System environment:

Intel(R) Xeon(R) CPU 3.10GHz, 4 cores | 8GB RAM

Ubuntu 16.04

Apache2 version using mpm_event

PHP FPM (5.6,7.1)


First,  Calculate process size :

Download : python script file “ps_mem.py” from Github

Open this and
ps_mem.py file upload on you server : 
https://github.com/raj412/ps_mem

chmod a+x ps_mem.py
sudo python ps_mem.py


Output like this: 

See here : 12 Apache processes, consuming a total of  35.7MiB, so each Apache process is using roughly 3MiB of RAM. The 42 php-fpm process use 2GB will use so each php-fpm using roughly 50MiB of RAM.

  

Next, Calculate Apache MaxRequestWorkers: 

I’ll reserve nearly 15% of memory for all other processes.
Round up Apache process size to 3MiB.

MaxRequestWorkers = (Total RAM - Memory used for Linux, DB, etc.) / process size


MaxRequestWorkers = (8192MB - 1400MB) / 3MB = 2264 


Last, Calculate php-fpm max-children

Round up php process size to 50MiB.

maxclients = (Total RAM - Memory used for Linux, DB, etc.) / process size 


maxclients = (8192MB - 1400MB) / 50MB = 135.84

 

Detailed Setup

In the /etc/apache2/mods-enabled/mpm-event.conf

<IfModule mpm_*_module>

ServerLimit (Total RAM - Memory used for Linux, DB, etc.) / process size
      StartServers           (Number of Cores)
      MinSpareThreads      25
      MaxSpareThreads     75
      ThreadLimit             64
      ThreadsPerChild       25
MaxRequestWorkers (Total RAM - Memory used for  Linux, DB, etc.)/ process size
    MaxConnectionsPerChild   1000

</IfModule>

Default settings did not contain the “ServerLimit”, so add it there.

In the /etc/php/7.1/fpm/pool.d/www.conf change the following settings:

pm = dynamic
pm.max_children         (total RAM - (DB etc) / process size)

pm.start_servers        (cpu cores * 4)
pm.min_spare_servers    (cpu cores * 2)
pm.max_spare_servers    (cpu cores * 4)
pm.max_requests         1000
 

 

Final settings:


8GB RAM and 4 CPUs à 3.7GHz. My average Apache process has 3MB, an average PHP process takes 50MB.

/etc/apache2/mods-available/mpm_event.conf

<IfModule mpm_event_module>
        ServerLimit              2264
        StartServers             4
        MinSpareThreads          25
        MaxSpareThreads          75
        ThreadLimit              64
        ThreadsPerChild          25
        MaxRequestWorkers        2264
        MaxConnectionsPerChild   1000
</IfModule>



/etc/php/7.1/fpm/pool.d/www.conf

pm = dynamic
pm.max_children = 136
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 1000

Save your settings and restart your apache and php-fpm processes.

sudo service apache2 restart
sudo service php7.1-fpm restart

Comments

  1. This comment has been removed by a blog administrator.

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete
  3. Without fail, your writing style is top professional; even your website also looks amazing thank you for posting. Traffic secrets

    ReplyDelete
  4. It will go far and is genuinely direct. A little information will likewise assist you with deciding whether the SEO proficient you are talking with understands what he/she is discussing. SEO no cure no pay

    ReplyDelete
  5. In any case, to achieve this, web designers use SEO custom administrations, which have enduring SEO Google rank. seo consultant birmingham

    ReplyDelete
  6. Regards for this marvellous post, I am glad I detected this web site on yahoo. buy backlinks from marketing1on1

    ReplyDelete
  7. Nonetheless, some different destinations may likewise be considered to gauge the integrity of code, for example, target code that burns-through less force. In present day times, processor designs are getting more perplexing. Ebay Google SEO expert

    ReplyDelete
  8. Hey what a brilliant post I have come across and believe me I have been searching out for this similar kind of post for past a week and hardly came across this. Thank you very much and will look for more postings from you. Traffic ticket attorney

    ReplyDelete

Post a Comment

Popular posts from this blog

Apt-fast for Increasing Download Speed while Installing and Updating Packages Ubuntu/Debian [Beginners Guide]

Have you ever experienced slow download speed when downloading or updating packages in Ubuntu even when your network connection is running fine? You encounter this issue especially when updating and installing packages for the first time after installing a new Ubuntu/Debian OS. However, there is a way to get around this by speeding up the download speed using apt-fast command in Linux. Apt-fast is a shell script wrapper for “apt-get” and “aptitude” that uses the power of either  axel  or  aria 2  download managers to accelerate the download process. It improves download performance by downloading packages simultaneously in parallel with multiple packages per connection. In this article, we will walk through some steps to install apt-fast in order to accelerate the update and downloading process in Ubuntu. We will use Ubuntu 18.04 LTS for describing the procedure mentioned in this article.   Step 1: Installing prerequisites We need to install...

What is a CDN ? How Does a content delivery network Work?

I ntroduction. Latest Web sites and applications often need to provide   amount of static content to end users. This content includes images, style sheets, JavaScript, and video. The increase in the number of static assets and the increase grows the bandwidth usage increases page load time decreased, depending on the size of the user's search experience, and reduce the usable capacity of the server. Dramatically improving performance, reducing the page load time   reduce the bandwidth and infrastructure costs, you can implement a content delivery network,  And  CDN cache these assets at a set of servers that are geographically distributed. What is a CDN? Content delivery network is a group of servers distributed geographically optimized to provide static content to end users. While this static content can be almost any type of data, CDNs are most commonly used to deliver web pages and related files, streaming video and audio, and large softwar...

How To Install PHP 7.4 and PHP 7.3 ON Ubuntu 18.04/19.04/16.04

How to Install PHP 7.4 / PHP 7.3 on Ubuntu?. This guide will help you Install PHP 7.4 / PHP 7.3 on Ubuntu 18 / Ubuntu 16 /  Ubuntu 19 . PHP is an open-source server-side scripting language which has been widely adopted for the creation of dynamic web pages. PHP is secure, fast, simple, efficient, flexible and a loosely typed scripting language. The PHP release 7.4.0 has been made available for the general public and for use in Production environments. How to install PHP 7.4 on Ubuntu 18.04 / Ubuntu 19.04 / Ubuntu 16.04 Step 1: Add PHP 7.4 PPA Repository We’ll add ppa:ondrej/php PPA repository which has the latest build packages of PHP. sudo apt-get update sudo apt -y install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update Step 2: Install PHP 7.4 on Ubuntu 18/ Ubuntu 19/ Ubuntu 16 Install PHP 7.4 on Ubuntu 18.04/19.04/16.04 using the command: sudo apt -y install php7.4 Check version inst...