Home  >  Article  >  Backend Development  >  What to do if there are too many php-fpm processes

What to do if there are too many php-fpm processes

藏色散人
藏色散人Original
2021-06-15 09:17:053794browse

The solution to the problem of too many php-fpm processes: first back up the original configuration file; then use vim to open the configuration file; then modify the configuration parameters; and finally restart the server through reboot.

What to do if there are too many php-fpm processes

The operating environment of this article: CentOS 7 system, PHP7.1 version, DELL G3 computer

What if there are too many php-fpm processes? manage?

Solve the problem of excessive server memory resource consumption caused by too many php-fpm processes in CentOS 7

What is php-fpm:

php-fpm is the FastCGI process manager, used to control php's memory and processes.

Operating environment:

CentOS 7

Problem check:

First check the total number of php processes:

pstree|grep php-fpm

Echo:

|-php-fpm---20*[php-fpm]

According to the response The displayed information shows that there are 20 php-fpm processes during the query.

You can also list the top 50 processes that consume the most memory through the following command:

ps auxw|head -1;ps auxw|sort -rn -k4|head -50

Solution process:

Let’s modify the configuration below file to optimize php-fpm to reduce memory usage.

My php-fpm configuration file is in the .../server/php/etc/ directory, enter this directory.

Back up the original configuration file first:

cp php-fpm.conf php-fpm.conf.bak

Note: After using vim to open the configuration file, press the Esc key, then enter "/", and then enter "xxx" to search for "xxx" string.

The specific configuration parameters are as follows:

pm.max_children = 100改为:pm.max_children = 25
pm.start_servers = 20改为pm.start_servers = 5
pm.min_spare_servers = 5改为pm.min_spare_servers = 2
pm.max_spare_servers = 35改为pm.max_spare_servers = 10

Restart the server:

reboot

After restarting, you can find that the memory usage is lower than before.

Note:

Explanation of the role of parameters in php-fpm.conf:

pm.max_children: The number of php-fpm processes opened in static mode.

pm.start_servers: The number of starting php-fpm processes in dynamic mode.

pm.min_spare_servers: The minimum number of php-fpm processes in dynamic mode.

pm.max_spare_servers: The maximum number of php-fpm processes in dynamic mode.

When making the above settings, I set the execution mode of php-fpm to dynamic:

pm = dynamic

php-fpm has two execution modes:

One is Static and the other is Dynamic. If set to static, only the pm.max_children parameter will take effect. If set to dynamic, the three parameters pm.start_servers, pm.min_spare_servers and pm.max_spare_servers will take effect. After setting it to dynamic, when php-fpm starts, it will start the corresponding number of processes according to the parameter setting of pm.start_servers. After that, the number of processes of php-fpm will be maintained between the number specified by pm.min_spare_servers and pm.max_spare_servers.

How to choose to use the static or dynamic execution mode of php-fpm:

The dynamic php-fpm execution mode allows php-fpm to release redundant processes, thus saving memory resources.

The static php-fpm execution method does not allow php-fpm to release more than processes, which avoids frequently starting or stopping the php-fpm process, thereby reducing the server's response time in some cases.

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of What to do if there are too many php-fpm processes. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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