


How to solve the problem that php-fpm runs out of memory due to too many processes in Linux
I found that in the Linux service of my personal blog, the database service often cannot be used and must be restarted before it can be accessed normally, so I will bring you a solution to this problem.
Analyze the problem
After discovering the problem, first use the free -m command to check the current server execution status:
You can see my The 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 database service hangs up due to high memory usage.
Continue to look at the details, use the top command:
Then look at the detailed process status listed in the command output, focusing on the 10th column of memory Usage ratio:
#It is found that the CPU usage is not high, and the CPU problem is also ruled out. In addition, it can be seen that the database service occupies 15.2% of the memory, and the memory usage is too high. 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
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 child processes, occupying more than half of the memory. The problem was found, and we started to solve the problem: Settings Control the number of php-fpm process pool processes.
Solve the problem
Through various search means, we found that we can control the number of php-fpm child processes by configuring pm.max_children property, first of all , open the php-fpm configuration file, execute the command:
vi /etc/php-fpm.d/www.conf
Find the pm.max_children field and found that its 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 more than half of the memory, so we need to reduce its value. The main here sets it to 25. At the same time, check the following two properties:
pm.max_spare_servers: This value indicates the guaranteed maximum number of idle processes. If the idle processes are greater than this value, this will be cleaned up. pm.min_spare_servers: Guarantee the minimum number of idle processes. If the idle process is less than this value, create a new child process;
Neither value can be greater than the pm.max_children value, usually set the pm.max_spare_servers value to pm.max_children 60%-80% of the value.
Finally, restart php-fpm
systemctl restart php-fpm
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 opened by php-fpm and the memory limit of each process
1. Use the command to check how many php-cgi processes are opened on the server
ps -fe |grep "php-fpm"|grep "pool"|wc -l
2. Check how many php-cgi processes have been used to handle tcp requests
netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
3.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 (my server The configuration file 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, you need to load the php-fpm service.
# I believe you have mastered the methods after reading these cases. For more exciting information, please pay attention to other related articles on the php Chinese website!
Related reading:
Detailed explanation of examples of binary search and binary search in java algorithm
Detailed explanation of binary search in javascript _javascript skills
javascript Find the position of characters in an array by half (ordered list)_javascript skills
The above is the detailed content of How to solve the problem that php-fpm runs out of memory due to too many processes in Linux. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











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.

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

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.

AI can help optimize the use of Composer. Specific methods include: 1. Dependency management optimization: AI analyzes dependencies, recommends the best version combination, and reduces conflicts. 2. Automated code generation: AI generates composer.json files that conform to best practices. 3. Improve code quality: AI detects potential problems, provides optimization suggestions, and improves code quality. These methods are implemented through machine learning and natural language processing technologies to help developers improve efficiency and code quality.

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

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.

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.

macOSandLinuxbothofferuniquestrengths:macOSprovidesauser-friendlyexperiencewithexcellenthardwareintegration,whileLinuxexcelsinflexibilityandcommunitysupport.macOS,developedbyApple,isknownforitssleekinterfaceandecosystemintegration,whereasLinux,beingo
