VPS侦探论坛

 找回密码
 注册
查看: 9051|回复: 7

php-fpm 优化问题

[复制链接]
发表于 2014-5-30 22:58:22 | 显示全部楼层 |阅读模式

新装的lnmp1.1 里面的 php-fpm.conf  文件的内容为:
[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log


这里的pm是动态值,到底ph=dynamic好呢 还是static好呢?有的文章上说当pm=static是 只有pm mx_children生效如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。
那么从军哥的技术角度来说,我们该怎么去设置这4个参数呢 ? 求军哥解答下,谢谢了
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2014-6-1 02:13:52 | 显示全部楼层

回复 1# 的帖子



pm设置动态还是静态,要根据你的内存来定!
1、如果你的内存足够大,例如4G或4G以上你可以将pm设置成静态(static),因为这样不需要进行额外的进程数目控制,会提高效率(频繁开关php-fpm进程也会有时滞的)所以内存够大的情况下开静态效果会更好。
比如4GB内存可以设置为pm.max_children = 80,那么按照每个进程占用15~30M内存计算,php-fpm耗费的内存就能控制在1.2G-2.5G的样子。
2、如果内存小,比如1G,那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存,将不多的内存分配给其他应用去使用,会使系统的运行更加畅通。

pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小备用php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大备用php-fpm进程数量。

下面是我1G内存VPS的配置:

pm = dynamic
pm.max_children = 24
pm.start_servers = 6
pm.min_spare_servers = 3
pm.max_spare_servers = 9
pm.max_requests = 2048
pm.process_idle_timeout = 10
request_terminate_timeout = 120
request_slowlog_timeout = 0

slowlog = log/slow.log
rlimit_files = 51200
rlimit_core = 0

[ 本帖最后由 cocub 于 2014-6-1 02:15 编辑 ]
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2014-6-1 12:23:57 | 显示全部楼层

我在服务器上 上次碰到过一个问题


pm = dynamic
pm.max_children = 100

使用MongoDB 的时候php 日志里经常看到 显示  IO 输入输出错误。

最后,我把  pm.max_children 改为500 ,问题解决。

pm = dynamic
pm.max_children = 500

所以说  pm.max_children  对 pm = dynamic   也有作用的。


所以,我现在1G 都设这么大

pm = dynamic
pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 20
pm.max_requests = 2048
pm.process_idle_timeout = 10
request_terminate_timeout = 180



512M 都设
pm = dynamic
pm.max_children = 80
pm.start_servers = 6
pm.min_spare_servers = 3
pm.max_spare_servers = 12
pm.max_requests = 2048
pm.process_idle_timeout = 10
request_terminate_timeout = 180


供参数,具体参数要设多少,可慢慢测试。     并与内存,VPS性能等相关。
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2014-6-1 12:26:31 | 显示全部楼层



使用pm = dynamic,  有时日志里提示  pm.max_children  过小,  调大  pm.max_children  值, 日志里的 pm.max_children  警告就没有了。

注:php日志里无警告时,就不需调整
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2014-6-1 12:35:20 | 显示全部楼层

回复 4# 的帖子


请问你说的这个日志 位置在哪里? 哪个日志? 麻烦告诉一下 谢谢

军哥运维代购:http://shop63846532.taobao.com/

发表于 2014-6-1 20:25:06 | 显示全部楼层

回复 5# 的帖子


/usr/local/php/var/log/php-fpm.log
发表于 2015-8-18 20:44:36 | 显示全部楼层

我用lnmp 为什么CPU使用率很高,


军哥,我用lnmp 为什么CPU使用率很高,只是压测phpinfo
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2023-1-18 09:09:36 | 显示全部楼层

90os 发表于 2015-8-18 20:44
军哥,我用lnmp 为什么CPU使用率很高,只是压测phpinfo

没有开启OPCache是主要原因,我感觉!
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-6-3 05:42 , Processed in 0.029755 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表