php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理

一个过客 2018-09-01

php-fpm的pool配置

nginx中可以开多个虚拟机,他们都需要php提供服务,所以为了保证每个不同虚拟机的性能,可以开启多个php-fpm的pool服务。每个pool服务一个站点。

方法1:

在 /usr/local/php-fpm/etc/php-fpm.conf中添加内容:

//两个模块命名为不同名字,监听的socket名字也不一样。在vhost相应的conf的中设置对应路径即可。
[www]
listen = /tmp/www.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_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
[shuai。com]
listen = /tmp/shuai.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_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
/usr/local/php-fpm/sbin/php-fpm -t //验证配置是否正确
service php-fpm restart //重启
[root@shuai-01 etc]# ps aux |grep php-fpm
root 5854 1.2 0.4 227212 4972 ? Ss 01:41 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 5855 0.0 0.4 227152 4708 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5856 0.0 0.4 227152 4708 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5857 0.0 0.4 227152 4708 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5858 0.0 0.4 227152 4708 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5859 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5860 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5861 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5862 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5863 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5864 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5865 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5866 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5867 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5868 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5869 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5870 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5871 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5872 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5873 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5874 0.0 0.4 227152 4716 ? S 01:41 0:00 php-fpm: pool www
php-fpm 5875 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5876 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5877 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5878 0.0 0.4 227152 4712 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5879 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5880 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5881 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5882 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5883 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5884 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5885 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5886 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5887 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5888 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5889 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5890 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5891 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5892 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5893 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
php-fpm 5894 0.0 0.4 227152 4720 ? S 01:41 0:00 php-fpm: pool shuai.com
root 5897 0.0 0.0 112684 976 pts/0 S+ 01:42 0:00 grep --color=auto php-fpm
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

使用pool:

[root@shuai-01 etc]# cd /usr/local/nginx/conf/vhost/
[root@shuai-01 vhost]# ls
aaa.com.conf ld.conf proxy.conf ssl.conf test.com.conf
1
2
3
4

一个定义:

[root@shuai-01 vhost]# vi test.com.conf 
1
2

php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理

一个定义成:

[root@shuai-01 vhost]# vi aaa.com.conf 
1
2

php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理

方法2:

第一种方法显得不够整洁。可以类似于nginx添加虚拟机时的include语句。

在 /usr/local/php-fpm/etc/php-fpm.conf中添加内容:

include = etc/php-fpm.d/*.conf

然后删掉下面的配置语句。

mkdir /usr/local/php-fpm/etc/php-fpm.d/
 cd /usr/local/php-fpm/etc/php-fpm.d/
 vim www.conf //内容如下
[www]
listen = /tmp/www.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_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
vim aming.conf //内容如下
[aming]
listen = /tmp/aming.sock //监听的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_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
//检查vhost的conf文件,相应的更改监听sock
/usr/local/php-fpm/sbin/php-fpm -t //验证配置是否正确
service php-fpm restart //重启
ps aux |grep php-fpm //发现aming和www都出现了
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

慢执行日志

php-fpm有一个非常有用的功能,就是慢执行日志。可以非常有效的用来诊断系统的问题在哪里。尤其是当系统访问速度慢时。

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf

//加入如下内容

request_slowlog_timeout = 1 //执行超过一秒的语句记录下来,生产环境中,这里一般写2秒钟

slowlog = /usr/local/php-fpm/var/log/www-slow.log //日志存放目录

vim /data/wwwroot/test.com/sleep.php
//写入如下内容
 <?php echo "test slow log";
 sleep(2);
 echo "done";
 ?>
[root@cent01 vhost]# curl -x127.0.0.1:80 test.com/sleep.php //测试
1
2
3
4
5
6
7
8
9
10

测试的时候出现502报错,pool中监听的*.sock于主配置文件中有出入。

test slow logdone
[root@cent01 vhost]# cat /usr/local/php-fpm/var/log/www-slow.log //慢日志提示第三行花费的时间太多
[16-Nov-2017 20:20:39] [pool www] pid 14208
script_filename = /data/nginx/test.com/sleep.php
[0x00007f630f62f270] sleep() /data/nginx/test.com/sleep.php:3
1
2
3
4
5
6

当php文件遇到错误时,查错可以在/etc/init.d/php-fpm.ini 文件中打开display_error功能,这样错误就能直接在浏览器上显示。

open_basedir

open_basedir如果在php.ini中定义就不合适,在pool中定义刚刚好,在Apache中定义在虚拟主机配置文件。

可以直接在/usr/local/php-fpm/etc/php-fpm.d/www.conf中添加如下语句:

php_admin_value[open_basedir]=/data/nginx/aming.com:/tmp/

配置完成后重启服务 service php-fpm restart 或者 /etc/init.d/php-fpm restart

其中路径需要配置正确。否则会报错。

将配置文件改为如下几行。

[root@shuai-01 php-fpm.d]# vi /usr/local/php-fpm/etc/php.ini 
error_log=/usr/local/php-fpm/var/log/php_errors.log
error_reporting=E_ALL
display_errors = Off
log_errors = On
1
2
3
4
5
6
7

创建一个存放错误日志的文件

[root@shuai-01 php-fpm.d]# touch /usr/local/php-fpm/var/log/php_errors.log
[root@shuai-01 php-fpm.d]# chmod 777 /usr/local/php-fpm/var/log/php_errors.log
1
2
3

php-fpm进程管理

[root@shuai-01 php-fpm.d]# cat www.conf 
[www]
listen = /tmp/www.sock
listen.mode=666
user = php-fpm
group = php-fpm
pm = dynamic //动态的
;pm = static
pm.max_children = 50 //最大子进程50个
pm.start_servers = 20 // 启动的时候20个
pm.min_spare_servers = 5 //空闲时,最少有5个
pm.max_spare_servers = 35 //空闲时,最大有35个
pm.max_requests = 500 // 一个进程最多的请求数
rlimit_files = 1024
request_slowlog_timeout = 1 
slowlog = /usr/local/php-fpm/var/log/www-slow.log 
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/

php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理

相关推荐