nginx+php7-fpm 性能提升几倍,跟踪实践结果并优化

历史ubuntu服务器使用的apache+php5,现在使用nginux+php7-fpm方式,看效果图,啥也不说了。

https://www.ffeeii.com/ffeeii.com/file/2016/12/29571bf4a422ddcff068f71923939bb9.png

https://www.ffeeii.com/ffeeii.com/file/2016/12/9324249d4d112cc1e906e1bd1ef500af.png

强烈推荐升级到php7,当然升级中基本上没碰到什么问题,

除了升到7.1有些问题,最后安装的7.0版本。运行后,代码基本上没改动。

上图运行一段时间后,内存占用低其实是不好的。需要对fpm进行优化,增加内存使用率。

php-fpm优化参数如下。

PHP-FPM 配置 & 优化

PHP-FPM子进程数量应该如何设置

pm = 生产环境 static

设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。

static:子进程的数量是固定的(pm.max_children)。

ondemand:进程在有需求时才产生(当请求时,与 dynamic 相反,pm.start_servers 在服务启动时即启动。

dynamic:子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。

pm.max_children = 

设置 PHP-FPM 进程池中最多能有多少个进程。这个没有绝对正确值,要根据实际情况设置。

假设每个 PHP 进程使用 20-30M 内存,为整个 PHP-FPM 环境配置了 512 M 内存,那么可以设置为 17-25 中间值。

pm.start_servers = 

设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。ps -ef | grep fpm  可以看到启动的数量

pm.min_spare_servers = 

设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.max_spare_servers = 

设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.max_requests = 1000

设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,默认值:0。

slowlog =

慢请求的记录日志

依4核8G的web服务器。这里的配置如下:

pm = dynamic

pm.max_children = 100

pm.start_servers = 60

pm.min_spare_servers = 30

pm.max_spare_servers = 100

pm.max_requests = 500