前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Php-fpm相关配置

Php-fpm相关配置

作者头像
老七Linux
发布于 2018-05-09 08:18:01
发布于 2018-05-09 08:18:01
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

一、php-fpm的pool:

有时候我们一个服务器可能会跑多个WEB,多个web就要对应多个pool,如果多个WEB SERVER对于一个php-fpm中的sock,一旦一台出现问题(资源耗尽502等)其它的server也会同样出现502!

1.1 配置文件详解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zhdy-03 ~]# vim /usr/local/php-fpm/etc/php-fpm.conf

我们之前就配置了一个默认的www

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

我们再次增加一个新的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[asd.com]
listen = /tmp/asd.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

测试+重载 (-t && -s reload)

再次查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps aux | grep php-fpm
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php-fpm    3596  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool www
php-fpm    3597  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool www
php-fpm    3598  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool www
php-fpm    3599  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool www
php-fpm    3600  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool www
php-fpm    3601  0.0  0.3 228724  5072 ?        S    20:24   0:00 php-fpm: pool asd.com
php-fpm    3602  0.0  0.3 228724  5072 ?        S    20:24   0:00 php-fpm: pool asd.com
php-fpm    3603  0.0  0.3 228724  5072 ?        S    20:24   0:00 php-fpm: pool asd.com
php-fpm    3604  0.0  0.3 228724  5072 ?        S    20:24   0:00 php-fpm: pool asd.com
php-fpm    3605  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool asd.com
php-fpm    3606  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool asd.com
php-fpm    3607  0.0  0.3 228724  5076 ?        S    20:24   0:00 php-fpm: pool asd.com

然后我们配置一下另外一台server:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] vhost]# vim asd.com.conf 

server
{
    listen 80 default_server;
    server_name asd.com;
    index index.html index.htm index.php;
    root /data/wwwroot/www.asd.com;

    location ~ \.php$
      {
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_pass unix:/tmp/asd.sock;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/www.asd.com$fastcgi_script_name;
      }
}

这样就完成了我们的配置。

1.2 另外一种比较好的方法:

删除其它内容,只保留如下配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] etc]# vim php-fpm.conf

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
include = etc/php-fpm.d/*.conf

include = etc/php-fpm.d/*.conf 由于如上我们配置的是在/etc目录下:所以需要创建一个目录;在其目录下分别创建不同server的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zhdy-03 etc]# mkdir php-fpm.d

然后逐一配置每个站点的php-fpm:

配置haha.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]03 php-fpm.d]# cat haha.conf 
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

配置asd.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]03 php-fpm.d]# cat asd.conf 
[asd.com]
listen = /tmp/asd.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] php-fpm.d]# ls
asd.conf  haha.conf

测试+重载(-t && -s reload)

再次检查:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]03 php-fpm.d]# ps aux | grep php-fpm

php-fpm    5404  0.0  0.3 228752  5080 ?        S    22:53   0:00 php-fpm: pool asd.com
php-fpm    5405  0.0  0.3 228752  5080 ?        S    22:53   0:00 php-fpm: pool asd.com
php-fpm    5406  0.0  0.3 228752  5080 ?        S    22:53   0:00 php-fpm: pool asd.com
php-fpm    5407  0.0  0.3 228752  5080 ?        S    22:53   0:00 php-fpm: pool asd.com
php-fpm    5408  0.0  0.3 228752  5080 ?        S    22:53   0:00 php-fpm: pool asd.com
php-fpm    5409  0.0  0.3 228752  5076 ?        S    22:53   0:00 php-fpm: pool www
php-fpm    5410  0.0  0.3 228752  5076 ?        S    22:53   0:00 php-fpm: pool www
php-fpm    5411  0.0  0.3 228752  5076 ?        S    22:53   0:00 php-fpm: pool www
php-fpm    5412  0.0  0.3 228752  5076 ?        S    22:53   0:00 php-fpm: pool www
php-fpm    5413  0.0  0.3 228752  5080 ?        S    22:53   0:00 php-fpm: pool www
php-fpm    5414  0.0  0.3 228752  5080 ?        S    22:53   0:00 php-fpm: pool www

二、php-fpm慢执行日志

php网站,建议使用lnmp架构的一个好处就是查看“慢日志”,为什么这么说呢?当我们的客户或者manager发现站点访问速度点慢,如果全部的负载均不是很高,一切正常还是慢,怎么办?那唯一的办法就是check“慢日志”,慢日志会向我们详细的展示某个页面的多少行代码在执行过程中超过了我们设定的阀值!

2.1 配置haha.com吧

在原有的基础上面,增加两行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
request_slowlog_timeout = 2
slowlog = /usr/local/php-fpm/var/log/haha_slow.log


命令的意思是:只要执行某条语句超过2秒就会记录到咱们规定的日志文件中去。

重载配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zhdy-03 php-fpm.d]# /etc/init.d/php-fpm restart

我们发现已经有配置文件,但是还没有记录任何的错误;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] php-fpm.d]# ls /usr/local/php-fpm/var/log/haha_slow.log
/usr/local/php-fpm/var/log/haha_slow.log

在这儿,我展示一下我一个线上的服务器所产生的错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[14-Aug-2017 23:42:55]  [pool www] pid 30570
script_filename = /www/www/www.okay686.cn/wp-c.php
[0x00007fee70779910] curl_exec() /www/www/www.okay686.cn/wp-in/Requests/Transport/cURL.php:162
[0x00007fee70779788] request() /www/www/www.okay686.cn/wp-in/class-requests.php:379
[0x00007fee70779548] request() /www/www/www.okay686.cn/wp-in/class-https.php:371
[0x00007fee70779420] request() /www/www/www.okay686.cn/wp-in/class-https.php:630
[0x00007fee70779308] head() /www/www/www.okay686.cn/wp-i/https.php:112


路径是修改过的,安全意识不能少。。。

三、open_basedir

如果一个server有很多个web服务,那么久不建议直接把open_basedir直接配置在php.ini中了。

3.1 配置

依然是配置haha.conf,在最后增加一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php_admin_value[open_basedir]=/data/wwwroot/www.haha.com:/tmp/

这样就完全限制了在www.haha.com目录下不可以访问其它的站点资源:

3.2 重载

3.3 测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]03 ~]# curl -x127.0.0.1:80 www.asd.com/2.php
File not found.
[[email protected]03 ~]# cd /data/wwwroot/www.asd.com/
[[email protected]03 www.asd.com]# ls
2.php

我们先编辑一下php.ini文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zhdy-03 www.asd.com]# vim /usr/local/php-fpm/etc/php.ini


增加如下配置:搜索/error_log 
errot_log = /usr/local/php-fpm/var/log/php_error.log

3.4 重载配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/etc/init.d/php-fpm restart

3.5 测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] www.asd.com]# cat /usr/local/php-fpm/var/log/
haha_slow.log  php-fpm.log    
[[email protected] www.asd.com]# touch /usr/local/php-fpm/var/log/php_error.log
[[email protected] www.asd.com]# chmod 777 !$
chmod 777 /usr/local/php-fpm/var/log/php_error.log

起初这个错误日志不会自动生成,所以我们需要自己创建一个。

四、php-fpm进程管理

在我们的配置文件中,还存在着如下配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pm = dynamic  //动态进程管理,也可以是static
 pm.max_children = 50 //最大子进程数,ps aux可以查看
 pm.start_servers = 20 //启动服务时会启动的进程数
 pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程。
 pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
 pm.max_requests = 500  //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。

站点之前整理了些详细的参数优化和介绍: http://www.okay686.cn/?p=536

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/08/17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
12.21 php-fpm的pool
php-fpm的pool目录概要 vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加 include = etc/php-fpm.d/*.conf mkdir /usr/local/php/etc/php-fpm.d/ cd /usr/local/php/etc/php-fpm.d/ vim www.conf //内容如下 [www] listen = /tmp/www.sock listen.mode=666 user = php-fpm group =
运维小白
2018/02/06
1.5K0
php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理
为了避免因多站点使用同一个pool时因一个站点故障导致pool出问题,进而影响使用同一个pool的其他站点的正常运行,要对每个站点配置一个单独的pool。
阿dai学长
2019/04/03
6810
php-fpm的pool,php-fpm慢执行日志,open_basedir,php-fpm进程管理
php-fpm的pool: php-fpm的pool是这个php-fpm服务的池子,php-fpm支持定义多个池子,能够监听多个不同的sock或者监听不同的ip。如果Nginx上跑了几个站点,每个站点
叶瑾
2018/06/14
1.1K0
linux学习第四十八篇:php-fpm的pool,php-fpm慢执行日志,定义open_basedir,php-fpm进程管理
php-fpm的pool Nginx可以配置多个虚拟主机,php-fpm同样也支持配置多个pool,每一个pool可以监听一个端口,也可以监听一个socket。 vim /usr/local/php/etc/php-fpm.conf 在[global]部分增加: include = etc/php-fpm.d/*.conf 创建php-fpm.d目录: mkdir /usr/local/php/etc/php-fpm.d 进入目录: cd /usr/local/php/etc/php-fp
用户1215343
2018/02/05
7390
linux学习第四十八篇:php-fpm的pool,php-fpm慢执行日志,定义open_basedir,php-fpm进程管理
学习笔记0518----nginx和php-fpm配置
负载均衡在服务端开发中算是一个比较重要的特性。因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就可以分发给后台服务端(backend servers,也叫做服务池, 后面简称backend)来做复杂的计算、处理和响应,这种模式的好处是相当多的:隐藏业务主机更安全,节约了公网IP地址,并且在业务量增加的时候可以方便地扩容后台服务器。
嘻哈记
2020/11/24
1.7K0
Linux基础(day53)
12.21 php-fpm的pool php-fpm的pool目录概要 vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加 include = etc/php-fpm.d/*.conf mkdir /usr/local/php/etc/php-fpm.d/ cd /usr/local/php/etc/php-fpm.d/ vim www.conf //内容如下 [www] listen = /tmp/www.sock listen.mode=666 user
运维小白
2018/02/06
8720
12.24 php-fpm进程管理
12.24 php-fpm进程管理 [root@hf-01 ~]# cat /usr/local/php-fpm/etc/php-fpm.d/www.conf [www] listen = /tmp/php-fcgi.sock listen.mode = 666 user = php-fpm group = php-fpm pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spar
运维小白
2018/02/06
1.1K0
12.22 php-fpm慢执行日志
php-fpm慢执行日志目录概要 vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下内容 request_slowlog_timeout = 1 slowlog = /usr/local/php-fpm/var/log/www-slow.log 配置nginx的虚拟主机test.com.conf,把unix:/tmp/php-fcgi.sock改为unix:/tmp/www.sock 重新加载nginx服务 vim /data/wwwroot/test.c
运维小白
2018/02/06
1.6K0
php-fpm.conf中pm.max_children多大合适,报错you may need to increase pm.start_servers, or pm.min/max_spare_se
web使用的是nginx+php的架构,网站上线还没多久,所以优化方面基本只是做了些初始的配置。 查看php-fpm.log发现有警告,这些警告和网站的挂了个时间基本吻合。我就从这里开始入手。 先开始也是找了些文档,但是第二天还是出现问题。后来查看配置文件并翻译了下(百度),英文底子不好。pm模块类似apache的模块,是分静态和动态的。 网上说的很多调整都是基于动态居多,但是并没说么定义这个模块。所以大家用动态和静态还是要仔细看看配置文件
全栈程序员站长
2022/07/18
1.5K0
php-fpm.conf中pm.max_children多大合适,报错you may need to increase pm.start_servers, or pm.min/max_spare_se
nginx之php-fpm优化
先来看一段日志(此日志来自于 var/log/php-fpm.log ): [13-Aug-2017 03:30:03] NOTICE: fpm is running, pid 28263 [13-Aug-2017 03:30:03] NOTICE: ready to handle connections [13-Aug-2017 10:11:04] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or p
老七Linux
2018/05/09
4.9K0
LNMP环境下Nginx中php-fpm的配置文件讲解
一、nginx配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 user nobody nobody; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/
老七Linux
2018/05/09
1.9K1
LAMP配置-php-fpm.conf
php-fpm.conf默认包含/usr/local/php72/etc/php-fpm.d/*.conf
全栈程序员站长
2022/09/06
5360
12.15 Nginx解析php相关配置
Nginx解析php相关配置目录概要 配置如下: location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name; } fastcgi_
运维小白
2018/02/06
2K0
LNMP搭建多个虚拟主机(wordpress+discuz+dedecms)
LNMP搭建wordpress+discuz+dedecms 一、搭建wordpress 1.1 配置PHP+MYSQL 详细的安装PHP+MYSQL参照此站点 1.2 下载编译nginx cd /usr/local/src wget http://nginx.org/download/nginx-1.12.1.tar.gz //下载地址会随时更新,建议直接到官网下载 tar zxf nginx-1.12.1.tar.gz ./configure --prefix=/usr/local/nginx
老七Linux
2018/05/09
6K0
PHP7中php.ini、php-fpm和www.conf 配置
php.ini是php运行核心配置文件,下面是一些常用配置 extension_dir="" 设置PHP的扩展库路径 expose_php = Off 避免PHP信息暴露在http头中 display_errors = Off 避免暴露php调用mysql的错误信息 log_errors = On 在关闭display_errors后开启PHP错误日志(路径在php-fpm.conf中配置) zend_extension=opcache.so extension=mysqli.so
conanma
2021/12/02
1.6K0
PHP-FPM性能优化配置方法参考
pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。
房东的狗丶
2023/02/17
1.1K0
PHP进程管理器php-fpm配置说明
php-fpm是PHP的一个进程管理器。php下面的众多work进程皆由php-fpm进程管理器管理。具体可参考:http://www.qqdeveloper.com/2019/10/06/CGI-FastCGI-php-fpm/
兔云小新LM
2020/05/27
2.3K0
php-fpm优化总结
Nginx 与 php-fpm 的结合 在 Linux 上,nginx 与 php-fpm 的通信有 tcp socket 和 unix socket 两种方式。 tcp socket 的优点是可以跨服务器,当 nginx 和 php-fpm 不在同一台机器上时,只能使用这种方式。 Unix socket 又叫 IPC (inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信,这种方式需要在 nginx 配置文件中填写 php-fpm 的 socket 文件位置。
ITer.996
2022/11/22
1.3K0
php-fpm优化总结
PHP-FPM进程配置算法
前言 PHP-FPM挂掉可能是因为进程数不够,本篇文章记录进程数配置的合理计算公式 正文 一般看到PHP-FPM日志的报错是这种 WARNING: [pool www] server reached pm.max_children setting (50), consider raising it 报错的意思是告诉你进程不够了,建议max_children配置项调整到50进程 PHP-FPM进程配置选项表 配置名 注释 pm.max_children 同一时刻允许最大的php-fpm子进程数量 pm.st
CrazyCodes
2018/09/18
9140
PHP-FPM
PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
友儿
2022/09/11
9060
相关推荐
12.21 php-fpm的pool
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验