


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!

ThesecrettokeepingaPHP-poweredwebsiterunningsmoothlyunderheavyloadinvolvesseveralkeystrategies:1)ImplementopcodecachingwithOPcachetoreducescriptexecutiontime,2)UsedatabasequerycachingwithRedistolessendatabaseload,3)LeverageCDNslikeCloudflareforservin

You should care about DependencyInjection(DI) because it makes your code clearer and easier to maintain. 1) DI makes it more modular by decoupling classes, 2) improves the convenience of testing and code flexibility, 3) Use DI containers to manage complex dependencies, but pay attention to performance impact and circular dependencies, 4) The best practice is to rely on abstract interfaces to achieve loose coupling.

Yes,optimizingaPHPapplicationispossibleandessential.1)ImplementcachingusingAPCutoreducedatabaseload.2)Optimizedatabaseswithindexing,efficientqueries,andconnectionpooling.3)Enhancecodewithbuilt-infunctions,avoidingglobalvariables,andusingopcodecaching

ThekeystrategiestosignificantlyboostPHPapplicationperformanceare:1)UseopcodecachinglikeOPcachetoreduceexecutiontime,2)Optimizedatabaseinteractionswithpreparedstatementsandproperindexing,3)ConfigurewebserverslikeNginxwithPHP-FPMforbetterperformance,4)

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


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

SublimeText3 Linux new version
SublimeText3 Linux latest version

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

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