<?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>深度VPS &#187; php-fpm</title>
	<atom:link href="http://www.deepvps.com/tag/php-fpm/feed" rel="self" type="application/rss+xml" />
	<link>http://www.deepvps.com</link>
	<description>专注VPS技术，关注前端技术</description>
	<lastBuildDate>Sat, 04 Feb 2023 14:00:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nginx使用的php-fpm的两种进程管理方式及优化</title>
		<link>http://www.deepvps.com/optimum-php-fpm.html</link>
		<comments>http://www.deepvps.com/optimum-php-fpm.html#comments</comments>
		<pubDate>Mon, 01 Feb 2016 22:22:41 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS管理维护]]></category>
		<category><![CDATA[php-fpm]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=1546</guid>
		<description><![CDATA[php-fpm进程池开启进程有两种方式：
一种是static，php-fpm进程数自始至终都是pm.max_children指定的数量，不再增加或减少。
另一种则是dynamic，则php-fpm进程数是动态的，最开始是pm.start_servers指定的数量，如果请求较多，则会自动增加，保证空闲的进程数不小于pm.min_spare_servers，如果进程数较多，也会进行相应清理，保证多余的进程数不多于pm.max_spare_servers。
要用到的一些参数，分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。
pm表示使用那种方式，有两个值可以选择，就是static（静态）或者dynamic（动态）。
下面4个参数的意思分别为：
pm.max_children：静态方式下开启的php-fpm进程数量，在动态方式下他限定php-fpm的最大进程数（这里要注意pm.max_spare_servers的值只能小于等于pm.max_children）
pm.start_servers：动态方式下的起始php-fpm进程数量。
pm.min_spare_servers：动态方式空闲状态下的最小php-fpm进程数量。
pm.max_spare_servers：动态方式空闲状态下的最大php-fpm进程数量。
那么，对于我们的服务器，选择哪种执行方式比较好呢？事实上，跟Apache一样，运行的PHP程序在执行完成后，或多或少会有内存泄露的问题。这也是为什么开始的时候一个php-fpm进程只占用3M左右内存，运行一段时间后就会上升到20-30M的原因了。
对于内存大的服务器（比如8G以上）来说，指定静态的max_children实际上更为妥当，因为这样不需要进行额外的进程数目控制，会提高效率。因为频繁开关php-fpm进程也会有时滞，所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到，比如8GB内存可以设置为100，那么php-fpm耗费的内存就能控制在 2G-3G的样子。如果内存稍微小点，比如1G，那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存，将不多的内存分配给其他应用去使用，会使系统的运行更加畅通。
对于小内存的服务器来说，比如256M内存的VPS，即使按照一个20M的内存量来算，10个php-cgi进程就将耗掉200M内存，那系统的崩溃就应该很正常了。因此应该尽量地控制php-fpm进程的数量，大体明确其他应用占用的内存后，给它指定一个静态的小数量，会让系统更加平稳一些。或者使用动态方式，因为动态方式会结束掉多余的进程，可以回收释放一些内存，所以推荐在内存较少的服务器或VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS，建议pm.max_spare_servers设置为20。至于pm.min_spare_servers，则建议根据服务器的负载情况来设置，比较合适的值在5~10之间。
]]></description>
			<content:encoded><![CDATA[<p>php-fpm进程池开启进程有两种方式：</p>
<p>一种是static，php-fpm进程数自始至终都是pm.max_children指定的数量，不再增加或减少。</p>
<p>另一种则是dynamic，则php-fpm进程数是动态的，最开始是pm.start_servers指定的数量，如果请求较多，则会自动增加，保证空闲的进程数不小于pm.min_spare_servers，如果进程数较多，也会进行相应清理，保证多余的进程数不多于pm.max_spare_servers。</p>
<p>要用到的一些参数，分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。</p>
<p>pm表示使用那种方式，有两个值可以选择，就是static（静态）或者dynamic（动态）。<span id="more-1546"></span></p>
<p>下面4个参数的意思分别为：</p>
<blockquote><p>pm.max_children：静态方式下开启的php-fpm进程数量，在动态方式下他限定php-fpm的最大进程数（这里要注意pm.max_spare_servers的值只能小于等于pm.max_children）<br />
pm.start_servers：动态方式下的起始php-fpm进程数量。<br />
pm.min_spare_servers：动态方式空闲状态下的最小php-fpm进程数量。<br />
pm.max_spare_servers：动态方式空闲状态下的最大php-fpm进程数量。</p></blockquote>
<p>那么，对于我们的服务器，选择哪种执行方式比较好呢？事实上，跟Apache一样，运行的PHP程序在执行完成后，或多或少会有内存泄露的问题。这也是为什么开始的时候一个php-fpm进程只占用3M左右内存，运行一段时间后就会上升到20-30M的原因了。</p>
<p>对于内存大的服务器（比如8G以上）来说，指定静态的max_children实际上更为妥当，因为这样不需要进行额外的进程数目控制，会提高效率。因为频繁开关php-fpm进程也会有时滞，所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到，比如8GB内存可以设置为100，那么php-fpm耗费的内存就能控制在 2G-3G的样子。如果内存稍微小点，比如1G，那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存，将不多的内存分配给其他应用去使用，会使系统的运行更加畅通。</p>
<p>对于小内存的服务器来说，比如256M内存的VPS，即使按照一个20M的内存量来算，10个php-cgi进程就将耗掉200M内存，那系统的崩溃就应该很正常了。因此应该尽量地控制php-fpm进程的数量，大体明确其他应用占用的内存后，给它指定一个静态的小数量，会让系统更加平稳一些。或者使用动态方式，因为动态方式会结束掉多余的进程，可以回收释放一些内存，所以推荐在内存较少的服务器或VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS，建议pm.max_spare_servers设置为20。至于pm.min_spare_servers，则建议根据服务器的负载情况来设置，比较合适的值在5~10之间。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/optimum-php-fpm.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx 遇到 502 Bad Gateway 自动重启脚本</title>
		<link>http://www.deepvps.com/nginx-502-bad-gateway-automatically-restart-script.html</link>
		<comments>http://www.deepvps.com/nginx-502-bad-gateway-automatically-restart-script.html#comments</comments>
		<pubDate>Mon, 31 May 2010 05:25:18 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS管理维护]]></category>
		<category><![CDATA[502]]></category>
		<category><![CDATA[Bad Gateway]]></category>
		<category><![CDATA[Crontab]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[脚本]]></category>
		<category><![CDATA[自动重启]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=447</guid>
		<description><![CDATA[放到crontab里一分钟执行一次。url和cmd根据自己的改。
原理就是用curl获取HTTP头，发现502状态码就执行重启php-fpm的命令。

#!/usr/bin/php
&#60;!--$url = 'http://www.deepvps.com';
$cmd = '/usr/local/php/sbin/php-fpm restart';
&#160;
for&#40;$i = 0; $i &#60; 5; $i ++&#41;&#123;         $exec = &#34;curl  connect-timeout 3 -I $url 2&#62;/dev/null&#34;;
        $res = shell_exec&#40;$exec&#41;;
&#160;
        if&#40;stripos&#40;$res, '502 Bad Gateway'&#41; !== false&#41;&#123;
   [...]]]></description>
			<content:encoded><![CDATA[<p>放到crontab里一分钟执行一次。url和cmd根据自己的改。<br />
原理就是用curl获取HTTP头，发现502状态码就执行重启php-fpm的命令。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/php
</span><span style="color: #339933;">&lt;!--</span><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://www.deepvps.com'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/usr/local/php/sbin/php-fpm restart'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>         <span style="color: #000088;">$exec</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;curl  connect-timeout 3 -I <span style="color: #006699; font-weight: bold;">$url</span> 2&gt;/dev/null&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$exec</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stripos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'502 Bad Gateway'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cmd</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">--&gt;</span></pre></div></div>

<p><span id="more-447"></span>至于crontab，请自行Google搜索</p>
<p>转自：http://www.hostloc.com/viewthread.php?tid=19208&amp;page=1#pid235729</p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/nginx-502-bad-gateway-automatically-restart-script.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
