Dotcpp  >  编程教程  >  Web网站配置与优化  >  调整php-fpm参数提高性能

调整php-fpm参数提高性能

点击打开在线编译器,边学边练

安装php时候,细心的大家可以发现我们同时安装了php-fpm模块,fpm模块就是负责处理请求进程的。而fpm这里相关的操作将直接影响服务器能响应多少请求,设置得当将有效提高处理效率,否则将会出现502网关超时或504错误。


下面我们来打开/etc/php/7.2/fpm/pool.d下的www.conf文件,找到如下几个参数:

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

;pm.max_requests = 500

这是笔者安装php后的默认参数,下面逐一讲解:


第一个dynamic表示进程的处理模式为动态,对应还有static模式

如果pm设置为staic,那么只有pm.max_childern这个参数生效

如果pm设置为dynamic,后面4个参数都生效。系统会在php-fpm运行开始时启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。


第二个参数pm.max_children表示最大能fork(启动)多少个进程,很明显,这个数额越大,那么将能同时更多的请求,自然不会出现连接慢、请求等待时长但是CPU或内存还占用不高的情况。这个数值在静态方式下指开启的php-fpm进程数量, 在动态方式下限定php-fpm的最大进程数。


第三个参数pm.start_servers表示如果是dynamic动态模式下,初始状态启动几个进程,随后根据需要动态调整,并由pm.min_spare_servers和pm.max_spare_servers两个参数决定。

第四个参数pm.min_spare_servers表示动态方式下空闲状态下的最小php-fpm进程数量,清理空闲进程后保留的数量

第五个参数pm.max_spare_servers表示动态方式下空闲状态的最大php-fpm进程数量,即当空闲进程达到此数值时清理

第六个参数pm.max_requests表示经历多少次请求后,销毁此进程重新启动,这样可以避免内存泄漏问题。


很明显这里max_children是5刚开始还够用,随着流量增大一定是不够用的,下面来谈谈具体的数值设定,最直接影响的是pm.max_children值,最基本的原则是:在内存CPU系统资源允许的情况下,越大越好,这里可给一个计算方式,如一个fpm进程大约15~25M,那么当服务器4G内存情况下,仅在理想状态下,开满可以约150~300个,然后观察服务器状态予以调整


一般而言,大内存服务器(如32、64G起))可以考虑静态模式,并发量效果好,小内存服务器可以考虑动态模式,按需自动控制


大家可以根据自己情况予以压力测试,根据自身服务器状况予以调整


本文固定URL:https://www.dotcpp.com/course/1225

Dotcpp在线编译      (登录可减少运行等待时间)