如果dm设置为 static , 那么其实只有pm.max_children这个参数生效 。 系统会开启设置数量的php-fpm进程 。
如果dm设置为 dynamic , 那么pm.max_children参数失效 , 后面3个参数生效 。
系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程 ,
然后根据系统的需求动态在pm.min_spare_servers和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上使用 。 具体最大数量根据 内存/30m 得到 。
pm.start_servers缺省值计算公式: min_spare_servers + (max_spare_servers – min_spare_servers) / 2 。
比如说512m的vps , 加入分配给php-fpm最大250m , 建议pm.max_spare_servers设置为250/30 ,约为8 。 至于pm.min_spare_servers , 则建议根据服务器的负载情况来设置 , 比如服务器上只是部署php环境的话 , 比较合适的值在2~5之间 。
这里面还有一个问题 , php-fpm因为一些第三方库可能会引起内存泄漏 , 时间长了 , 占用的内存会比较多 , 像我们的服务器现在就是50m左右 , 还好 , 有pm.max_requests这个参数 , 这个参数指定了一个php-fpm子进程执行多少次之后重启该进程 。 这个可能就要根据你的实际情况调整了 。
我的服务器配置
硬盘:系统盘20g
内存:512m
cpu:1核
系统:centos 6.5 64位
带宽:独享1m
部署的应用
nginx php mysql
优化后的参数
编辑/usr/local/php/etc/php-fpm.conf:
pm = dynamic
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 8
- linux查看cpu核数和内存 linux看cpu几核的
- python占用CPA python占用cpu
- cpu使用率内存使用率磁盘使用率 cpu使用率内存
- 手机照片存在什么位置,内存卡照片怎么导出到手机?
- 华为p20能插内存卡正确使用内存卡 华为p20可以插内存卡吗
- 如何查看手机内存都是什么占用了,彻底清理手机运行内存?
- win10资源管理器占用cpu Win10资源管理器占用内存高如何解决
- windows10wsappx占内存过高 Win10电脑wsappx占用大量内存怎么办
- 服务主机:Task Scheduler造成CPU占用100%怎么办
- 怎么测试u盘启动盘制作成功 怎么使用U盘启动盘进行内存测试
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
