第二十二课预习笔记

12.17 Nginx负载均衡

Nginx代理一台服务器叫做代理,代理两台或多台服务器就叫做负载均衡。这样的好处是,当一台服务器出现问题,代理服务器就不会再把请求发给出问题的服务器。

因为,在代理服务器中,proxy_pass 后不能跟多个IP,所以我们就用到了 upstream,在upstream中定义多个IP端口。

这时我们就用到IP对应的域名有哪些,查看域名对应的IP有哪些,用dig命令。

安装:yum install -y bind-utils

[root@liang-00 ~]# dig www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29020
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.baidu.com.            IN    A

;; ANSWER SECTION:
www.baidu.com.        932    IN    CNAME    www.a.shifen.com.
www.a.shifen.com.    179    IN    A    61.135.169.125
www.a.shifen.com.    179    IN    A    61.135.169.121

;; Query time: 9 msec
;; SERVER: 119.29.29.29#53(119.29.29.29)
;; WHEN: Thu Dec 13 20:15:35 CST 2018
;; MSG SIZE  rcvd: 90

1、配置nginx负载均衡。

新建文件:vim /usr/local/nginx/conf/vhost/load.conf

添加以下内容:

upstream baidu
{
    ip_hash;
    server 61.135.169.125:80;
    server 61.135.169.121:80;
}
server
{
    listen 80;
    server_name www.baidu.com;
    location /
    {
        proxy_pass      http://baidu;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

              

其中:

ip_hash    是为了让同一个用户始终保持在同一个服务器上。    

proxy_pass      http://baidu;    必须写upstream的名字。

2、测试。

如果不加载 load.conf 我们用curl访问www.baidu.com会是默认虚拟主机。

[root@liang-00 ~]# curl -x127.0.0.1:80 www.baidu.com
This is a default_test html
[root@liang-00 ~]# 

检查语法加载。

curl -x127.0.0.1:80 www.baidu.com

[root@liang-00 ~]# curl -x127.0.0.1:80 www.baidu.com
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

3、nginx不支持代理https只支持http,upstream中的端口不能写443。

要想代理https服务,nginx代理只能去访问80端口

 

12.18 ssl原理

https的访问是加密的,比较安全。我们可以用http://www.apelearn.com访问,也可以用https://www.apelearn.com访问。

SSL:安全套节层

SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

1、SSL工作流程:

  • 浏览器发送一个https的请求给服务器;
  • 服务器要有一套数字证书,可以自己制作(后面的操作就是阿铭自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出>提示页面,这套证书其实就是一对公钥和私钥;
  • 服务器会把公钥传输给客户端;
  • 客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密;
  • 客户端把加密后的随机字符串传输给服务器;
  • 服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据该加密为对称加密,所谓对称加密,就是将数据和私钥也就是这个随机字符串通过某种算法混合在一起,这样除非知道私钥,否则无法取数据内容;
  • 服务器把加密后的数据传输给客户端;
  • 客户端收到数据后,再用自己的私钥也就是那个随机字符串解密;

7673e6389fc097141c753dcf33c2ad1b281.jpg

 

12.19 生成ssl密钥对

自己生成ssl密钥对,用到openssl命令。

1、安装openssl。

进入 /usr/local/nginx/conf/ 目录

yum install -y openssl

2、生成私钥。

生成文件名为tmp.key的私钥:openssl genrsa -des3 -out tmp.key 2048

tmp.key:私钥名字

genrsa:加密方式

-des3:CBC模式的3DES加密

3、转换key,取消密码。

openssl rsa -in tmp.key -out liang.key

删除tmp.key

rm tmp.key

4、生成证书请求文件,需要它和私钥一起生成公钥文件。

openssl req -new -key liang.key -out liang.csr

[root@liang-00 conf]# openssl req -new -key liang.key -out liang.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:liang
Organizational Unit Name (eg, section) []:liang
Common Name (eg, your name or your server's hostname) []:liang
Email Address []:liang@163.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:liang
An optional company name []:liang

5、生成公钥文件。

openssl x509 -req -days 365 -in liang.csr -signkey liang.key -out liang.crt    有效期365天。

[root@liang-00 conf]# ls liang.
liang.crt  liang.csr  liang.key

 

12.20 Nginx配置ssl

新建ssl.conf配置文件,位置:/usr/local/nginx/conf/vhost/ssl.conf

1、配置ssl.conf

vim /usr/local/nginx/conf/vhost/ssl.conf

server
{
    listen 443;    #监听443端口
    server_name liang.com;
    index index.html index.php;
    root /data/wwwroot/liang.com;
    ssl on;
    ssl_certificate liang.crt;
    ssl_certificate_key liang.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #支持协议
}

2、测试ssl

检查语法:

[root@liang-00 vhost]# /usr/local/nginx/sbin/nginx -t
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/vhost/ssl.conf:7
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

出现错误,提示我们不支持ssl,需要重新编译nginx支持ssl

./configure --help |grep ssl    查看编译ssl需要的参数。

[root@liang-00 nginx-1.12.1]# ./configure --help |grep ssl
  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-mail_ssl_module             enable ngx_mail_ssl_module
  --with-stream_ssl_module           enable ngx_stream_ssl_module
  --with-stream_ssl_preread_module   enable ngx_stream_ssl_preread_module
  --with-openssl=DIR                 set path to OpenSSL library sources
  --with-openssl-opt=OPTIONS         set additional build options for OpenSSL

重新编译nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module

make && make install

重新检查配置文件。

[root@liang-00 nginx-1.12.1]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重启nginx服务,服务中增加了443端口。

[root@liang-00 nginx-1.12.1]# /etc/init.d/nginx restart
Restarting nginx (via systemctl):                          [  OK  ]
[root@liang-00 nginx-1.12.1]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4974/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      971/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1222/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      4974/nginx: master  
tcp6       0      0 :::3306                 :::*                    LISTEN      1182/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      971/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1222/master         
[root@liang-00 nginx-1.12.1]# 

这时我们直接用curl访问liang.com会报错,我们更改hosts文件来访问。

[root@liang-00 ~]# curl https://liang.com/index.html
curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
[root@liang-00 ~]# 

提示我们不被信任,我们可以用浏览器来测试。

首先在hosts中,添加IP对应的域名。服务器中关闭iptables。然后在浏览其中访问https://liang.com。

Windows中hosts文件添加:192.168.37.200 liang.com

linux中临时关闭iptables:systemctl stop iptables.service

f19b14e2a3c1584b805241c3ca8a00f113b.jpg

 

 

 

 

5553571af7df3f0007af2316b5d7c575b8c.jpg

 

12.21 php-fpm的pool

php是支持定义多个pool的,每一个pool都可以监听不同的socket和ip,不同的站点可以使用不同的pool,这样一来在nginx解析php时来防止一个pool发生资源耗尽而导致其它站点受影响。

在php-fpm配置文件 /usr/local/php-fpm/etc/php-fpm.conf中添加pool:liang.com

[root@liang-00 etc]# cat 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
[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

[liang.com]
listen = /tmp/liang.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

保存退出,检查语法错误。

在nginx的虚拟主机配置文件中有一台已经配置了解析php。在另一台默认虚拟主机中添加解析php,使用pool:liang.com 

重启php-fpm服务,可以看到有两个pool在提供服务。

[root@liang-00 etc]# ps aux|grep php-fpm
root      5663  6.6  0.4 227344  4976 ?        Ss   22:22   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm   5664  0.0  0.4 227284  4708 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5665  0.0  0.4 227284  4708 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5666  0.0  0.4 227284  4708 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5667  0.0  0.4 227284  4708 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5668  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5669  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5670  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5671  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5672  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5673  0.1  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5677  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5678  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5683  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5684  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5685  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5686  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5687  0.0  0.4 227284  4716 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5688  0.0  0.4 227284  4716 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5689  0.0  0.4 227284  4716 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5690  0.0  0.4 227284  4716 ?        S    22:22   0:00 php-fpm: pool www
php-fpm   5691  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool liang.com
php-fpm   5692  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool liang.com
php-fpm   5693  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool liang.com
php-fpm   5694  0.0  0.4 227284  4712 ?        S    22:22   0:00 php-fpm: pool liang.com
php-fpm   5695  0.0  0.4 227284  4716 ?        S    22:22   0:00 php-fpm: pool liang.com
php-fpm   5696  0.0  0.4 227284  4716 ?        S    22:22   0:00 php-fpm: pool liang.com
php-fpm   5697  0.0  0.4 227284  4716 ?        S    22:22   0:00 php-fpm: pool liang.com

在nginx配置文件中可以使用include来分别对vhost文件进行单独配置,php-fpm也有类似功能。

在php-fpm.conf配置文件中添加:include = etc/php-fpm.d/*.conf 来指定pool配置文件。

首先创建php-fpm.d目录。

创建:vim www.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

vim liang.com.conf 添加以下内容:

[liang.com]
listen = /tmp/liang.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

之后检查与法,重新加载服务。

 

12.22 php-fpm慢执行日志

在做php网站时通常使用LNMP,可以分析php的慢执行日志。

在运维工作中经常遇到网站变慢的问题,一是查看分析系统运行负载,二就是分析php慢执行日志。

1、配置vim /usr/local/php-fpm/etc/php-fpm.d/www.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
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log

request_slowlog_timeout = 1    执行超过1秒记录日志。

slowlog = /usr/local/php-fpm/var/log/www-slow.log    慢日志文件存放路径

检查语法,重新加载php-fpm。

2、编写模拟执行php满执行脚本。

vim /data/wwwroot/test.com/sleep.php

<?php
 echo “test slow log”;
sleep(2);
echo “done”;
?>

执行脚本出错,在php.ini配置文件中打开错误提示。

vim /usr/local/php-fpm/etc/php.ini

修改:display_errors = On

检查php-fpm语法,重新加载php-fpm。

curl -x127.0.0.1:80 test.com/sleep.php

[root@liang-00 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
<br />
<b>Parse error</b>:  syntax error, unexpected 'slow' (T_STRING), expecting ',' or ';' in <b>/data/wwwroot/test.com/sleep.php</b> on line <b>2</b><br />
[root@liang-00 php-fpm.d]# 

修改完错误执行:

[root@liang-00 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
test slow logdone[root@liang-00 php-fpm.d]#

在慢日志文件中可以看到记录的php脚本执行慢的语句。

[root@liang-00 php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log 

[13-Dec-2018 23:11:06]  [pool www] pid 6375
script_filename = /data/wwwroot/test.com/sleep.php
[0x00007f3d375912e8] sleep() /data/wwwroot/test.com/sleep.php:3
[root@liang-00 php-fpm.d]# 

 

12.23 open_basedir

LNMP中open_basedir是在php-fpm的pool中定义,用来限制php打开代码的位置。

1、在/usr/local/php-fpm/etc/php-fpm.d/www.conf 加入以下内容:

php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/

2、检查语法,重新加载,测试open_basedir。

curl -x127.0.0.1:80 test.com/3.php -I

[root@liang-00 php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.12.1
Date: Thu, 13 Dec 2018 15:36:36 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

[root@liang-00 php-fpm.d]# 

3、更改配置文件open_basedir路径再次访问3.php

首先打开错误日志。

更改:display_errors = Off

error_log = /usr/local/php-fpm/var/log/php_errors.log

error_reporting = E_ALL

touch生成:php_errors.log

增加777权限

更改open_basedir 路径

php_admin_value[open_basedir]=/data/wwwroot/qqtest.com:/tmp/

测试:

[root@liang-00 php-fpm.d]# !curl
curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.12.1
Date: Thu, 13 Dec 2018 15:46:26 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

[root@liang-00 php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php
No input file specified.
[root@liang-00 php-fpm.d]# cat /usr/local/php-fpm/var/log/php_errors.log
[13-Dec-2018 15:41:57 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:41:57 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:41:59 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:41:59 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:44:12 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:44:12 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:44:26 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:44:26 UTC] PHP Deprecated:  Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0
[13-Dec-2018 15:46:26 UTC] PHP Warning:  Unknown: open_basedir restriction in effect. File(/data/wwwroot/test.com/3.php) is not within the allowed path(s): (/data/wwwroot/qqtest.com:/tmp/) in Unknown on line 0
[13-Dec-2018 15:46:26 UTC] PHP Warning:  Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[13-Dec-2018 15:46:58 UTC] PHP Warning:  Unknown: open_basedir restriction in effect. File(/data/wwwroot/test.com/3.php) is not within the allowed path(s): (/data/wwwroot/qqtest.com:/tmp/) in Unknown on line 0
[13-Dec-2018 15:46:58 UTC] PHP Warning:  Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[root@liang-00 php-fpm.d]# 

 

12.24 php-fpm进程管理

在php的pool中有关进程的配置:

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

 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的子进程最多可以处理这么多请求,当达到这数值时,它会自动退出。

 

转载于:https://my.oschina.net/u/3993922/blog/2988290

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值