Table of Contents
Articles you may be interested in:
Home Backend Development PHP Tutorial Detailed explanation of solving the problem of memory exhaustion caused by too many php-fpm processes under Linux

Detailed explanation of solving the problem of memory exhaustion caused by too many php-fpm processes under Linux

Jul 07, 2018 pm 05:55 PM
fpm linux php Memory process

This article mainly introduces how to solve the problem of memory exhaustion caused by too many php-fpm processes under Linux. Friends who need it can refer to it

Recently, I found that the Linux server and database service of my personal blog often hang up. , which resulted in the need to restart before I could access it normally, which was extremely disgusting, so I decided to start solving the problem and free up my time and energy (I didn’t want to have problems frequently and then restart manually, which was laborious and time-consuming).

Analyze the problem

After discovering the problem, first use the free -m command to check the current server execution status:

You can see that my server memory is 2G, but currently there is only 70M of available memory left, and the memory usage is as high as 92%. It is very likely that the memory usage is too high. The database service hangs up.

Continue to see the details, use the top command:

Then look at the process details listed in the command output, Focus on the memory usage ratio in column 10:

It is found that the CPU usage is not high, and the CPU problem is also ruled out. In addition, you can see that the database service takes up 15.2%. Memory, when the memory usage is too high, it will crowd out the database process (the process that takes up the most memory), causing the service to hang up, so we need to check the detailed memory usage. Which processes consume so much memory?

Use command:

ps auxw|head -1;ps auxw|sort -rn -k4|head -40
Copy after login

View the top 40 processes that consume the most memory:

Looking at the memory usage ratio in the fourth column, we found that in addition to the mysql database service, the php-fpm service pool opened too many sub-processes, occupying more than half of the memory. The problem was found, and we started to solve the problem: setting control php- Number of fpm process pool processes.

Solve the problem

Through various search methods, I found that you can control php- by configuring the pm.max_children attribute. Number of fpm child processes. First, open the php-fpm configuration file and execute the command:

vi /etc/php-fpm.d/www.conf
Copy after login

Find the pm.max_children field and discover its The value is too large:

As shown in the figure, the value of pm.max_children is 50. Each process occupies 1%-2.5% of the memory, which adds up to It consumes most of the memory, so we need to reduce its value. The blogger here sets it to 25. At the same time, check the following two attributes:

pm.max_spare_servers: This value means Guarantee the maximum number of idle processes. If the idle processes are greater than this value, clean them up pm.min_spare_servers: Guarantee the minimum number of idle processes. If the idle processes are less than this value, create a new child process;

Neither of these two values ​​can be greater than the pm.max_children value. Usually, the pm.max_spare_servers value is set to 60% of the pm.max_children value - 80%.

Finally, restart php-fpm

systemctl restart php-fpm
Copy after login

Check the memory usage again, the memory usage is reduced a lot:

After observing the memory usage many times, we found that after this improvement, the server memory resource consumption has been greatly alleviated.

ps: Check the number of processes started by php-fpm and the memory limit of each process

1. Use the command to check the total number of processes opened on the server. How many php-cgi processes are there

 ps -fe |grep "php-fpm"|grep "pool"|wc -l
Copy after login

2. Check how many php-cgi processes are used to handle tcp requests

 netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
Copy after login

3.In the linux nginx php environment, the memory limit of each php-fpm process

Setting method:

Edit the php-fpm.conf configuration file

php_admin_value[memory_limit] = 128M (the configuration file on my server is in /etc/php5/fpm/pool.d/www.conf This file is included in php-fpm.conf) The following numbers can be changed at will: 32M, 64M, 128M, 256M, 512M. This setting can be written according to your server memory size and your needs. After modification, Load the php-fpm service.

Summary

The above is the solution to the problem of memory exhaustion caused by too many php-fpm processes under Linux introduced by the editor. I hope it is helpful to you. If you have any questions, please leave me a message and I will reply to you in time. I would also like to thank you all for your support of the php Chinese website!

Articles you may be interested in:

Detailed analysis of examples of methods for php to implement the check-in function

php-fpm parameters under Linux Detailed explanation of configuration introduction and parameter optimization instructions

Detailed explanation of data migration and data filling in Laravel

The above is the detailed content of Detailed explanation of solving the problem of memory exhaustion caused by too many php-fpm processes under Linux. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1665
14
PHP Tutorial
1270
29
C# Tutorial
1250
24
Linux Architecture: Unveiling the 5 Basic Components Linux Architecture: Unveiling the 5 Basic Components Apr 20, 2025 am 12:04 AM

The five basic components of the Linux system are: 1. Kernel, 2. System library, 3. System utilities, 4. Graphical user interface, 5. Applications. The kernel manages hardware resources, the system library provides precompiled functions, system utilities are used for system management, the GUI provides visual interaction, and applications use these components to implement functions.

The Continued Use of PHP: Reasons for Its Endurance The Continued Use of PHP: Reasons for Its Endurance Apr 19, 2025 am 12:23 AM

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

Docker on Linux: Containerization for Linux Systems Docker on Linux: Containerization for Linux Systems Apr 22, 2025 am 12:03 AM

Docker is important on Linux because Linux is its native platform that provides rich tools and community support. 1. Install Docker: Use sudoapt-getupdate and sudoapt-getinstalldocker-cedocker-ce-clicotainerd.io. 2. Create and manage containers: Use dockerrun commands, such as dockerrun-d--namemynginx-p80:80nginx. 3. Write Dockerfile: Optimize the image size and use multi-stage construction. 4. Optimization and debugging: Use dockerlogs and dockerex

The Compatibility of IIS and PHP: A Deep Dive The Compatibility of IIS and PHP: A Deep Dive Apr 22, 2025 am 12:01 AM

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

What happens if session_start() is called multiple times? What happens if session_start() is called multiple times? Apr 25, 2025 am 12:06 AM

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

How to understand DMA operations in C? How to understand DMA operations in C? Apr 28, 2025 pm 10:09 PM

DMA in C refers to DirectMemoryAccess, a direct memory access technology, allowing hardware devices to directly transmit data to memory without CPU intervention. 1) DMA operation is highly dependent on hardware devices and drivers, and the implementation method varies from system to system. 2) Direct access to memory may bring security risks, and the correctness and security of the code must be ensured. 3) DMA can improve performance, but improper use may lead to degradation of system performance. Through practice and learning, we can master the skills of using DMA and maximize its effectiveness in scenarios such as high-speed data transmission and real-time signal processing.

Using Laravel: Streamlining Web Development with PHP Using Laravel: Streamlining Web Development with PHP Apr 19, 2025 am 12:18 AM

Laravel optimizes the web development process including: 1. Use the routing system to manage the URL structure; 2. Use the Blade template engine to simplify view development; 3. Handle time-consuming tasks through queues; 4. Use EloquentORM to simplify database operations; 5. Follow best practices to improve code quality and maintainability.

How to handle high DPI display in C? How to handle high DPI display in C? Apr 28, 2025 pm 09:57 PM

Handling high DPI display in C can be achieved through the following steps: 1) Understand DPI and scaling, use the operating system API to obtain DPI information and adjust the graphics output; 2) Handle cross-platform compatibility, use cross-platform graphics libraries such as SDL or Qt; 3) Perform performance optimization, improve performance through cache, hardware acceleration, and dynamic adjustment of the details level; 4) Solve common problems, such as blurred text and interface elements are too small, and solve by correctly applying DPI scaling.

See all articles