<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>php-fpm &#8211; 良的世界</title>
	<atom:link href="https://www.lemonary.cn/tag/php-fpm/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.lemonary.cn</link>
	<description></description>
	<lastBuildDate>Mon, 01 Sep 2025 09:14:02 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.lemonary.cn/wp-content/uploads/2024/12/profile-150x150.jpg</url>
	<title>php-fpm &#8211; 良的世界</title>
	<link>https://www.lemonary.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>记录本站php由版本8.0.30升级到8.3.7</title>
		<link>https://www.lemonary.cn/%e8%ae%b0%e5%bd%95%e6%9c%ac%e7%ab%99php%e7%94%b1%e7%89%88%e6%9c%ac8-0-30%e5%8d%87%e7%ba%a7%e5%88%b08-3-7/</link>
					<comments>https://www.lemonary.cn/%e8%ae%b0%e5%bd%95%e6%9c%ac%e7%ab%99php%e7%94%b1%e7%89%88%e6%9c%ac8-0-30%e5%8d%87%e7%ba%a7%e5%88%b08-3-7/#respond</comments>
		
		<dc:creator><![CDATA[shine]]></dc:creator>
		<pubDate>Wed, 27 Aug 2025 06:56:08 +0000</pubDate>
				<category><![CDATA[建站记录]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php-fpm]]></category>
		<guid isPermaLink="false">https://www.lemonary.cn/?p=2338</guid>

					<description><![CDATA[一、问题背景 由于WordPress升级到6.8.2版本以来一直提示php版本太旧，建议升级到8.3及更高的版 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">一、问题背景</h2>



<p class="wp-block-paragraph">由于WordPress升级到6.8.2版本以来一直提示php版本太旧，建议升级到8.3及更高的版本，本着强迫症的原则，已于今天上午将本站的php升级到版本8.3.7，现记录本文。看完本文如果你有更好更简单的升级方法可以在评论区留言，大家一起探讨。</p>



<h2 class="wp-block-heading">二、操作步骤</h2>



<h3 class="wp-block-heading">（1）lnmp脚本安装新版php</h3>



<pre class="wp-block-code"><code>&#91;root@lemonary lnmp2.2]# ./install.sh mphp

+------------------------------------------------------------------------+
|          LNMP V2.1 for Rocky Linux Server, Written by Licess          |
+------------------------------------------------------------------------+
|        A tool to auto-compile &amp; install LNMP/LNMPA/LAMP on Linux       |
+------------------------------------------------------------------------+
|           For more information please visit https://lnmp.org           |
+------------------------------------------------------------------------+
===========================
You have 9 options for your PHP install.
1: Install PHP 5.2.17
2: Install PHP 5.3.29
3: Install PHP 5.4.45
4: Install PHP 5.5.38
5: Install PHP 5.6.40
6: Install PHP 7.0.33
7: Install PHP 7.1.33
8: Install PHP 7.2.34
9: Install PHP 7.3.33
10: Install PHP 7.4.33
11: Install PHP 8.0.30
12: Install PHP 8.1.28
13: Install PHP 8.2.19
14: Install PHP 8.3.7
Enter your choice (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 or 14): 14</code></pre>



<p class="wp-block-paragraph">选择14开始安装即可。</p>



<p class="wp-block-paragraph">安装完成后服务器上同时启动着两个版本的php，此时将两版本php全部停止</p>



<pre class="wp-block-code"><code>systemctl stop php-fpm
pkill php-fpm</code></pre>



<p class="wp-block-paragraph">两个版本的路径：</p>



<pre class="wp-block-code"><code>旧：/usr/local/php
新：/usr/local/php8.3</code></pre>



<h3 class="wp-block-heading">（2）保险起见，做下备份</h3>



<pre class="wp-block-code"><code>备份 PHP 配置文件
cp /usr/local/php/etc/php.ini /usr/local/php/etc/php.ini.bak
cp /usr/local/php8.3/etc/php.ini /usr/local/php8.3/etc/php.ini.bak.original
备份 PHP-FPM 配置（如果有用到）
cp /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf.bak
cp /usr/local/php/etc/php-fpm.d/www.conf /usr/local/php/etc/php-fpm.d/www.conf.bak</code></pre>



<h3 class="wp-block-heading">（3）检查并配置 PHP-FPM</h3>



<pre class="wp-block-code"><code>grep -n '^listen' /usr/local/php/etc/php-fpm.conf
grep -n '^listen' /usr/local/php8.3/etc/php-fpm.conf</code></pre>



<p class="wp-block-paragraph">确保新版本的&nbsp;<code>listen</code>&nbsp;设置和旧版本<strong>完全一致</strong>（例如&nbsp;<code>listen = /tmp/php-cgi.sock</code>），这样 Nginx 才不需要做任何改动。</p>



<h3 class="wp-block-heading">（4）替换二进制文件与链接（<strong>关键</strong>）</h3>



<p class="wp-block-paragraph">这是将系统默认&nbsp;<code>php</code>&nbsp;和&nbsp;<code>php-fpm</code>&nbsp;命令指向新版本的核心步骤。</p>



<pre class="wp-block-code"><code>备份旧版本的 PHP 目录
mv /usr/local/php /usr/local/php_8.0.30_bak

创建新版本的软链接
ln -sf /usr/local/php8.3 /usr/local/php

验证链接和版本
ls -l /usr/local/php
/usr/local/php/bin/php -v</code></pre>



<p class="wp-block-paragraph">现在，<code>/usr/local/php</code>&nbsp;这个路径就不再指向旧版本，而是指向了&nbsp;<code>/usr/local/php8.3</code>。你的所有现有脚本（如 Nginx 配置、开机启动脚本等）如果引用了&nbsp;<code>/usr/local/php/</code>，现在都会自动使用新版本。</p>



<h3 class="wp-block-heading">（5）启动新版本的 PHP-FPM 服务</h3>



<pre class="wp-block-code"><code>/usr/local/php/sbin/php-fpm
或者
systemctl start php-fpm</code></pre>



<h3 class="wp-block-heading">（6）验证新服务是否正常运行</h3>



<pre class="wp-block-code"><code>ps aux | grep php-fpm
ls -l /tmp/php-cgi.sock # 请替换为你配置中实际的 socket 路径</code></pre>



<h3 class="wp-block-heading">（7）配置 Nginx 并重启（如果需要）</h3>



<p class="wp-block-paragraph"><strong>通常情况下，如果你的 PHP-FPM&nbsp;<code>listen</code>&nbsp;配置没有改变，Nginx 是无需任何修改的。</strong>&nbsp;但最好检查一下 Nginx 的配置文件，确认&nbsp;<code>fastcgi_pass</code>&nbsp;参数指向的 socket 地址是否正确。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">注意：<br>因为我在新版php-fpm.conf中将<code>listen</code>修改成<code>/tmp/php-cgi8.3.sock</code>（原本为<code>/tmp/php-cgi.sock</code>），所以此处Nginx需要修改配置文件如下位置。</p>
</blockquote>



<p class="wp-block-paragraph">修改<code>/usr/local/nginx/conf/enable-php.conf</code>文件中的<code>fastcgi_pass</code>如下：</p>



<pre class="wp-block-code"><code>fastcgi_pass  unix:/tmp/php-cgi8.3.sock;</code></pre>



<p class="wp-block-paragraph">改成对应php-fpm.conf中配置的listen。</p>



<p class="wp-block-paragraph">为什么要修改这里呢？因为这个文件在nginx.conf配置文件中通过include引入，如下：</p>



<pre class="wp-block-code"><code>grep "include" /usr/local/nginx/conf/nginx.conf
include enable-php.conf;</code></pre>



<p class="wp-block-paragraph">检查配置并重启 Nginx：</p>



<pre class="wp-block-code"><code>nginx -t
nginx -s reload</code></pre>



<h2 class="wp-block-heading">三、其它问题</h2>



<p class="wp-block-paragraph">由于原版的php曾经手动添加过模块exif和Imagick，详见<a href="https://www.lemonary.cn/wordpress%e7%ab%99%e7%82%b9%e5%81%a5%e5%ba%b7%e4%b9%8bphp%e6%a8%a1%e7%bb%84exif%e5%92%8cimagick/">WordPress站点健康之PHP模组Exif和Imagick</a>，所以升级到新版后WordPress还会再次提示缺少这两个模块，而且这次新增一个模块Opcache。这次我们不再手动安装而是直接用lnmp中的脚本进行安装，特别简单。</p>



<pre class="wp-block-code"><code>cd lnmp2.2/
先后执行这两条命令即可
./addons.sh install exif
./addons.sh install imagemagick
./addons.sh install opcache</code></pre>



<p class="wp-block-paragraph">执行结束后重启php-fpm</p>



<pre class="wp-block-code"><code>systemctl restart php-fpm</code></pre>



<p class="wp-block-paragraph">查看验证是否安装成功</p>



<pre class="wp-block-code"><code>&#91;root@lemonary ~]# php -m | grep -E 'exif|imagick|OPcache'
exif
imagick
Zend OPcache
Zend OPcache</code></pre>



<p class="wp-block-paragraph">至此，php版本升级完成。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.lemonary.cn/%e8%ae%b0%e5%bd%95%e6%9c%ac%e7%ab%99php%e7%94%b1%e7%89%88%e6%9c%ac8-0-30%e5%8d%87%e7%ba%a7%e5%88%b08-3-7/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>服务器内存被php-fpm占满导致网站变慢</title>
		<link>https://www.lemonary.cn/%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%86%85%e5%ad%98%e8%a2%abphp-fpm%e5%8d%a0%e6%bb%a1%e5%af%bc%e8%87%b4%e7%bd%91%e7%ab%99%e5%8f%98%e6%85%a2/</link>
					<comments>https://www.lemonary.cn/%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%86%85%e5%ad%98%e8%a2%abphp-fpm%e5%8d%a0%e6%bb%a1%e5%af%bc%e8%87%b4%e7%bd%91%e7%ab%99%e5%8f%98%e6%85%a2/#respond</comments>
		
		<dc:creator><![CDATA[shine]]></dc:creator>
		<pubDate>Mon, 16 Dec 2024 05:13:22 +0000</pubDate>
				<category><![CDATA[建站记录]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LNMP]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[ps]]></category>
		<guid isPermaLink="false">https://www.lemonary.cn/?p=1076</guid>

					<description><![CDATA[一、问题描述 过了个周末发现博客网站变得很慢，发布文章特别迟钝。经过登录服务器查看资源使用情况发现是php-f [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="一、问题描述">一、问题描述</h2>



<p class="wp-block-paragraph">过了个周末发现博客网站变得很慢，发布文章特别迟钝。经过登录服务器查看资源使用情况发现是php-fpm进程将内存全部占用，才导致了变慢的情况。通过查找了解了其中的部分原理：</p>



<p class="wp-block-paragraph">LNMP架构中PHP是运行在FastCGI模式下，按照官方的说法，php-cgi会在每个请求结束的时候会回收脚本使用的全部内存，但是并不会释放给操作系统，而是继续持有以应对下一次PHP请求。而php-fpm是FastCGI进程管理器，用于控制php的内存和进程等。</p>



<p class="wp-block-paragraph">所以，解决的办法就是通过php-fpm优化总的进程数和单个进程占用的内存，从而解决php-fpm进程占用内存大和不释放内存的问题。</p>



<h2 class="wp-block-heading" id="二、分析思路">二、分析思路</h2>



<p class="wp-block-paragraph">查看服务器内存</p>



<pre class="wp-block-code"><code>&#91;root@dameng linuxscript]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3736        3469         114           1         151          72
Swap:          4095        2131        1964</code></pre>



<p class="wp-block-paragraph">占用CPU最多的10个进程</p>



<pre class="wp-block-code"><code>&#91;root@dameng linuxscript]# ps aux|head -1;ps aux|sort -rn -k +3|head
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www        87009  0.0  1.9 424552 73072 ?        S    Dec13   1:30 php-fpm: pool www
www        77548  0.0  0.1  97456  4200 ?        S    Dec12   0:11 nginx: worker process
www        77547  0.0  0.1  97460  5780 ?        S    Dec12   0:11 nginx: worker process
www         7384  0.0  2.4 436428 91832 ?        S    Dec09   6:26 php-fpm: pool www
www        73344  0.0  2.4 428988 93996 ?        S    Dec12   3:25 php-fpm: pool www
www         6787  0.0  2.4 441144 92476 ?        S    Dec09   6:29 php-fpm: pool www
www         6785  0.0  2.4 446040 92264 ?        S    Dec09   6:30 php-fpm: pool www
www         6738  0.0  1.9 441812 76064 ?        S    Dec09   6:43 php-fpm: pool www
www         6737  0.0  2.3 434280 90192 ?        S    Dec09   6:29 php-fpm: pool www
www         6736  0.0  2.4 460112 93820 ?        S    Dec09   6:29 php-fpm: pool www</code></pre>



<p class="wp-block-paragraph">占用内存最多的10个进程</p>



<pre class="wp-block-code"><code>&#91;root@dameng linuxscript]# ps aux|head -1;ps aux|sort -rn -k +4|head
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www         1183  0.0  2.6 445260 100948 ?       S    Dec09   7:05 php-fpm: pool www
www         1177  0.0  2.6 457820 99796 ?        S    Dec09   6:54 php-fpm: pool www
www         1176  0.0  2.6 456788 100032 ?       S    Dec09   6:31 php-fpm: pool www
www         1179  0.0  2.5 438904 98660 ?        S    Dec09   6:32 php-fpm: pool www
www         7384  0.0  2.4 436428 91832 ?        S    Dec09   6:26 php-fpm: pool www
www        73344  0.0  2.4 428988 93996 ?        S    Dec12   3:25 php-fpm: pool www
www         6787  0.0  2.4 441144 92476 ?        S    Dec09   6:29 php-fpm: pool www
www         6785  0.0  2.4 446040 92264 ?        S    Dec09   6:30 php-fpm: pool www
www         6736  0.0  2.4 460112 93820 ?        S    Dec09   6:29 php-fpm: pool www
www         1191  0.0  2.4 440416 94024 ?        S    Dec09   7:10 php-fpm: pool www</code></pre>



<p class="wp-block-paragraph">可以看到除去nginx的两个进程，其余全部是php-fpm。</p>



<p class="wp-block-paragraph">查看当前php-fpm总进程数</p>



<pre class="wp-block-code"><code>&#91;root@dameng ~]# ps -ylC php-fpm --sort:rss
S   UID     PID    PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
S     0     900       1  0  80   0  4268 59433 -      ?        00:00:10 php-fpm
S  1005    1174     900  0  80   0 10196 97401 -      ?        00:07:09 php-fpm
S  1005    1185     900  0  80   0 11732 100252 -     ?        00:06:29 php-fpm
S  1005  107461     900  0  80   0 31796 97600 -      ?        00:00:19 php-fpm
S  1005  107459     900  0  80   0 66224 104786 -     ?        00:00:20 php-fpm
S  1005  107452     900  0  80   0 73024 104239 -     ?        00:00:20 php-fpm
S  1005  107451     900  0  80   0 76952 108688 -     ?        00:00:19 php-fpm
S  1005    6463     900  0  80   0 79508 108117 -     ?        00:06:31 php-fpm
S  1005    6576     900  0  80   0 82336 113815 -     ?        00:06:32 php-fpm
S  1005   73344     900  0  80   0 82372 107247 -     ?        00:03:25 php-fpm
S  1005    1193     900  0  80   0 82636 109523 -     ?        00:06:28 php-fpm
S  1005    1184     900  0  80   0 84272 109207 -     ?        00:06:32 php-fpm
S  1005    1180     900  0  80   0 84936 109765 -     ?        00:06:50 php-fpm
S  1005    1189     900  0  80   0 85408 113732 -     ?        00:06:32 php-fpm
S  1005    6737     900  0  80   0 85636 108570 -     ?        00:06:29 php-fpm
S  1005    1191     900  0  80   0 86452 110104 -     ?        00:07:10 php-fpm
S  1005  107467     900  0  80   0 86716 105308 -     ?        00:00:19 php-fpm
S  1005  107436     900  0  80   0 86920 106680 -     ?        00:00:20 php-fpm
S  1005    1178     900  0  80   0 88236 108623 -     ?        00:06:29 php-fpm
S  1005    1187     900  0  80   0 88968 108701 -     ?        00:06:33 php-fpm
S  1005    1188     900  0  80   0 89208 109055 -     ?        00:06:30 php-fpm
S  1005   87009     900  0  80   0 89692 105626 -     ?        00:01:31 php-fpm
S  1005    1181     900  0  80   0 91280 108432 -     ?        00:06:31 php-fpm
S  1005  107466     900  0  80   0 91612 106331 -     ?        00:00:20 php-fpm
S  1005    7384     900  0  80   0 91716 109107 -     ?        00:06:26 php-fpm
S  1005    6787     900  0  80   0 92396 110286 -     ?        00:06:29 php-fpm
S  1005  107462     900  0  80   0 93112 105760 -     ?        00:00:19 php-fpm
S  1005    1182     900  0  80   0 93404 108442 -     ?        00:06:32 php-fpm
S  1005    6736     900  0  80   0 93448 115028 -     ?        00:06:29 php-fpm
S  1005    6785     900  0  80   0 93800 111510 -     ?        00:06:30 php-fpm
S  1005  107460     900  0  80   0 94540 107895 -     ?        00:00:20 php-fpm
S  1005    1190     900  0  80   0 94812 108684 -     ?        00:06:29 php-fpm
S  1005    1177     900  0  80   0 95120 114455 -     ?        00:06:54 php-fpm
S  1005    1186     900  0  80   0 95132 119251 -     ?        00:06:34 php-fpm
S  1005  107468     900  0  80   0 95508 107337 -     ?        00:00:20 php-fpm
S  1005    6738     900  0  80   0 96216 109941 -     ?        00:06:44 php-fpm
S  1005    1192     900  0  80   0 96412 108828 -     ?        00:06:28 php-fpm
S  1005    1175     900  0  80   0 96776 110023 -     ?        00:07:17 php-fpm
S  1005    1179     900  0  80   0 97792 109726 -     ?        00:06:32 php-fpm
S  1005    1183     900  0  80   0 98208 111315 -     ?        00:07:05 php-fpm
S  1005    1176     900  0  80   0 98856 114197 -     ?        00:06:31 php-fpm
&#91;root@dameng ~]# ps -ylC php-fpm --sort:rss|wc -l
42
&#91;root@dameng ~]# ps -fe |grep "php-fpm"|grep "pool"|wc -l
40</code></pre>



<p class="wp-block-paragraph">查看当前php-fpm进程的内存占用情况及启动时间</p>



<pre class="wp-block-code"><code>&#91;root@dameng ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'|grep www|sort -nrk5
  87009 php-fpm         php-fpm: pool www            0.0 89692 422504 Dec13 www       1005
  77548 nginx           nginx: worker process        0.0  3932  97456 Dec12 www       1005
  77547 nginx           nginx: worker process        0.0  5472  97460 Dec12 www       1005
   7384 php-fpm         php-fpm: pool www            0.0 91716 436428 Dec09 www       1005
  73344 php-fpm         php-fpm: pool www            0.0 82372 428988 Dec12 www       1005
   6787 php-fpm         php-fpm: pool www            0.0 92396 441144 Dec09 www       1005
   6785 php-fpm         php-fpm: pool www            0.0 93800 446040 Dec09 www       1005
   6738 php-fpm         php-fpm: pool www            0.0 96216 439764 Dec09 www       1005
   6737 php-fpm         php-fpm: pool www            0.0 85636 434280 Dec09 www       1005
   6736 php-fpm         php-fpm: pool www            0.0 93448 460112 Dec09 www       1005
   6576 php-fpm         php-fpm: pool www            0.0 82336 455260 Dec09 www       1005
   6463 php-fpm         php-fpm: pool www            0.0 79508 432468 Dec09 www       1005
   1193 php-fpm         php-fpm: pool www            0.0 82636 438092 Dec09 www       1005
   1192 php-fpm         php-fpm: pool www            0.0 96412 435312 Dec09 www       1005
   1191 php-fpm         php-fpm: pool www            0.0 86452 440416 Dec09 www       1005
   1190 php-fpm         php-fpm: pool www            0.0 94812 434736 Dec09 www       1005
   1189 php-fpm         php-fpm: pool www            0.0 85408 454928 Dec09 www       1005
   1188 php-fpm         php-fpm: pool www            0.0 89208 436220 Dec09 www       1005
   1187 php-fpm         php-fpm: pool www            0.0 88968 434804 Dec09 www       1005
   1186 php-fpm         php-fpm: pool www            0.0 95132 477004 Dec09 www       1005
   1185 php-fpm         php-fpm: pool www            0.0 11732 401008 Dec09 www       1005
   1184 php-fpm         php-fpm: pool www            0.0 84272 436828 Dec09 www       1005
   1183 php-fpm         php-fpm: pool www            0.0 98208 445260 Dec09 www       1005
   1182 php-fpm         php-fpm: pool www            0.0 93404 433768 Dec09 www       1005
   1181 php-fpm         php-fpm: pool www            0.0 91280 433728 Dec09 www       1005
   1180 php-fpm         php-fpm: pool www            0.0 84936 439060 Dec09 www       1005
   1179 php-fpm         php-fpm: pool www            0.0 97792 438904 Dec09 www       1005
   1178 php-fpm         php-fpm: pool www            0.0 88236 434492 Dec09 www       1005
   1177 php-fpm         php-fpm: pool www            0.0 95120 457820 Dec09 www       1005
   1176 php-fpm         php-fpm: pool www            0.0 98856 456788 Dec09 www       1005
   1175 php-fpm         php-fpm: pool www            0.0 96776 440092 Dec09 www       1005
   1174 php-fpm         php-fpm: pool www            0.0 10196 389604 Dec09 www       1005
 110196 grep            grep --color=auto www        0.0  1108  12140 10:57 root         0
 107468 php-fpm         php-fpm: pool www            0.0 95508 429348 Dec15 www       1005
 107467 php-fpm         php-fpm: pool www            0.0 86716 421232 Dec15 www       1005
 107466 php-fpm         php-fpm: pool www            0.0 91612 425324 Dec15 www       1005
 107462 php-fpm         php-fpm: pool www            0.0 93112 423040 Dec15 www       1005
 107461 php-fpm         php-fpm: pool www            0.0 31796 390400 Dec15 www       1005
 107460 php-fpm         php-fpm: pool www            0.0 94540 431580 Dec15 www       1005
 107459 php-fpm         php-fpm: pool www            0.0 66224 419144 Dec15 www       1005
 107452 php-fpm         php-fpm: pool www            0.0 73024 416956 Dec15 www       1005
 107451 php-fpm         php-fpm: pool www            0.0 76952 434752 Dec15 www       1005
 107436 php-fpm         php-fpm: pool www            0.0 86920 426720 Dec15 www       1005</code></pre>



<p class="wp-block-paragraph">查看当前php-fpm进程平均占用内存情况</p>



<pre class="wp-block-code"><code>&#91;root@dameng ~]# ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
79M</code></pre>



<p class="wp-block-paragraph">所以，罪魁祸首就是php-fpm。</p>



<h2 class="wp-block-heading" id="三、解决方法">三、解决方法</h2>



<p class="wp-block-paragraph">php-fpm.conf就是php-fpm的配置文件，一般路径为：/usr/local/php/etc/php-fpm.conf</p>



<p class="wp-block-paragraph">修改如下参数</p>



<pre class="wp-block-code"><code>pm = dynamic
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 100</code></pre>



<ul class="wp-block-list">
<li>pm = dynamic #指定进程管理方式，有3种可供选择：static、dynamic和ondemand。</li>



<li>pm.max_children = 30 #static模式下创建的子进程数或dynamic模式下同一时刻允许最大的php-fpm子进程数量。</li>



<li>pm.start_servers = 20 #动态方式下的起始php-fpm进程数量。</li>



<li>pm.min_spare_servers = 10 #动态方式下服务器空闲时最小php-fpm进程数量。</li>



<li>pm.max_spare_servers = 30 #动态方式下服务器空闲时最大php-fpm进程数量。</li>



<li>pm.max_requests = 300 #php-fpm子进程能处理的最大请求数。</li>
</ul>



<p class="wp-block-paragraph">其中pm.max_requests是设置每个子进程重生之前服务的请求数，对于可能存在内存泄漏的第三方模块来说是非常有用的。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">注意<br>pm.max_requests设置得太小也容易出现无进程可用（<a href="https://www.fujieace.com/nginx/502-bad-gateway.html" target="_blank" rel="noreferrer noopener">502</a>状态），一般来说，普通网站设置max_requests 300~500 合适，但也要结合pm.start_servers和你的网站访问量来看，也可以适当调大和减少，这个是因情况而异的。</p>
</blockquote>



<p class="wp-block-paragraph">修改完配置文件后，保存退出，检测配置文件语法是否正确</p>



<pre class="wp-block-code"><code>&#91;root@dameng ~]# /usr/local/php/sbin/php-fpm -t
&#91;16-Dec-2024 13:07:50] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful</code></pre>



<p class="wp-block-paragraph">重启php-fpm</p>



<pre class="wp-block-code"><code>&#91;root@dameng etc]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done</code></pre>



<p class="wp-block-paragraph">再次查看服务器内存使用情况</p>



<pre class="wp-block-code"><code>&#91;root@dameng etc]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3736         289        3160           2         285        3224
Swap:          4095         895        3200</code></pre>



<p class="wp-block-paragraph">可以看到服务器内存使用率已经降下来了，后续再做观察。</p>



<p class="wp-block-paragraph">经过一周的观察，服务器内存可以稳定下来，available始终保持在1000左右，表现还算良好。但是，在我使用WordPress插件Duplicator进行备份后发现，available又减少了一百多，看着不是很舒服。所以决定在服务器添加定时任务，每天凌晨1点重启php-fpm服务以释放内存。</p>



<pre class="wp-block-code"><code>crontab -e
## 新增内容
0 1 * * *               service php-fpm restart
## 保存退出</code></pre>



<p class="wp-block-paragraph">这样服务器内存可以始终保持在一个健康的水平。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.lemonary.cn/%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%86%85%e5%ad%98%e8%a2%abphp-fpm%e5%8d%a0%e6%bb%a1%e5%af%bc%e8%87%b4%e7%bd%91%e7%ab%99%e5%8f%98%e6%85%a2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
