PHP-FPM配置 作者:Admin PHP 时间:2022-02-22 11:25:21 931人已阅读 个人博客 简介PHP-FPM常用配置 ### PHP-FPM配置 php-fpm进程数,按照php-fpm进程数=内存/2/30来计算 ``` pm = dynamic #指定进程管理方式,有3种可供选择:static、dynamic和ondemand。 pm.max_children = 16 #static模式下创建的子进程数或dynamic模式下同一时刻允许最大的php-fpm子进程数量。 pm.start_servers = 10 #动态方式下的起始php-fpm进程数量。 pm.min_spare_servers = 8 #动态方式下服务器空闲时最小php-fpm进程数量。 pm.max_spare_servers = 16 #动态方式下服务器空闲时最大php-fpm进程数量。 pm.max_requests = 2000 #php-fpm子进程能处理的最大请求数。 pm.process_idle_timeout = 10s request_terminate_timeout = 120 ``` 这段配置的意思是,当一个 PHP-CGI 进程处理的请求数累积到 500 个后,自动重启该进程。 注意: pm.max_requests设置得太小也容易出现无进程可用(502状态),一般来说,普通网站设置max_requests 300~500 合适,但也要结合pm.start_servers和你的网站访问量来看,也可以适当调大和减少,这个是因情况而异的。 如果pm.max_requests没有设置重启参数,默认为0不限制最大服务次数,也就是子进程永远不重启,经验表明,长时间不重启子进程会导致系统负载异常,处理时间变长等现象。 max_children是PHP-FPM Pool 最大的子进程数,他数值取决于你的服务器内存。 假设你打算给10G内存给当前配置的PHP-FPM Pool,一般一个PHP请求占用内存10M-40M,我们按站点每个PHP请求占用内存25M,这样max_children = 10G/25M = 409。所以,这个值可以根据情况算出来 max_requests是每个子进程重生之前处理的请求数, 默认值为unlimited(默认为1024),可以设置小一点(如500左右),这样可以避免内存泄露带来的问题 Nginx代理过程,将业务服务器请求数据缓存到本地文件,再将文件数据转发给请求客户端。高并发的客户端请求,必然要求服务器文件句柄的并发打开限制。使用ulimit命令(ulimit -n),查看Linux系统文件句柄并发限制,默认是1024,我们可以改为65535(2 的 16 次方,这是系统端口的极限)。修改的方法为:修改系统文件/etc/security/limits.conf,添加如下信息,并重新启动系统生效。 ``` * soft nofile 65535 * hard nofile 65535 ``` 然后在Nginx配置文件中,把文件限制及连接数信息改为65535: ``` worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } ``` 上一篇: php弱类型的坑 下一篇: 二进制搭建PHP