nginx+php7-fpm 性能提升几倍,跟踪实践结果并优化
历史ubuntu服务器使用的apache+php5,现在使用nginux+php7-fpm方式,看效果图,啥也不说了。
强烈推荐升级到php7,当然升级中基本上没碰到什么问题,
除了升到7.1有些问题,最后安装的7.0版本。运行后,代码基本上没改动。
上图运行一段时间后,内存占用低其实是不好的。需要对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