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 //內(nèi)容如下
[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 繼續(xù)編輯配置文件 vim aming.conf //內(nèi)容如下
[aming] listen = /tmp/aming.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/sbin/php-fpm –t /etc/init.d/php-fpm restart php-fpm的pool php-fpm有一個概念,叫做pool。 使用ps aux |grep php-fpm最右側(cè)看到的那一列就是pool,也就是它的池子
[root@hanfeng ~]# ps aux |grep php-fpm root 2280 0.0 0.4 227776 4952 ? Ss 18:29 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf) php-fpm 2281 0.0 0.4 227776 4708 ? S 18:29 0:00 php-fpm: pool www php-fpm 2282 0.0 0.4 227776 4708 ? S 18:29 0:00 php-fpm: pool www php-fpm 2283 0.0 0.4 227776 4708 ? S 18:29 0:00 php-fpm: pool www php-fpm 2284 0.0 0.4 227776 4708 ? S 18:29 0:00 php-fpm: pool www php-fpm 2285 0.0 0.4 227776 4712 ? S 18:29 0:00 php-fpm: pool www php-fpm 2286 0.0 0.4 227776 4712 ? S 18:29 0:00 php-fpm: pool www php-fpm 2287 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2288 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2289 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2290 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2291 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2292 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2293 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2294 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2295 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2296 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2297 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2298 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2299 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www php-fpm 2300 0.0 0.4 227776 4716 ? S 18:29 0:00 php-fpm: pool www root 7644 0.0 0.0 112680 984 pts/0 S+ 21:38 0:00 grep --color=auto php-fpm [root@hanfeng ~]# 切換目錄,會看到我們只定義了一個www的pool
[root@hanfeng ~]# cd /usr/local/php-fpm/etc/ [root@hanfeng etc]# ls pear.conf php-fpm.conf php-fpm.conf.default php.ini [root@hanfeng 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.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 [root@hanfeng etc]# 其實是支持定義多個池子的,每一個池子都可以監(jiān)聽不同的sock或者TCP/IP,nginx如果有多個站點,那么每個站點都能去使用一個獨立的pool,這樣做的優(yōu)勢就是,當(dāng)其中一個php發(fā)生502了(502很有可能是資源不夠了),如果所有的網(wǎng)站使用了同一個池子,那其中一個網(wǎng)站發(fā)生了故障(比如寫的程序有問題),那么就會把你的php資源耗盡,這樣就會造成其他的站點也會502,所以有必要把每一個站點隔離開來,每一個站點使用獨立的pool 設(shè)置多個pool,方法一 在/usr/local/php-fpm/etc/php-fpm里面,繼續(xù)增加pool 寫第二個pool,名稱為hanfeng.com,listen = /tmp/hanfeng.sock 配置中的其他信息可根據(jù)自己的需求來配置
[root@hanfeng etc]# vi /usr/local/php-fpm/etc/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.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 [hanfeng.com] listen = /tmp/hanfeng.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 保存退出 檢查是否存在語法錯誤
[root@hanfeng etc]# /usr/local/php-fpm/sbin/php-fpm -t [09-Jan-2018 23:28:58] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful [root@hanfeng etc]# 若沒有語法錯誤,做一個php-fpm重啟 /etc/init.d/php-fpm restart 或使用 /etc/init.d/php-fpm reload
[root@hanfeng etc]# /etc/init.d/php-fpm reload Reload service php-fpm done [root@hanfeng etc]# 這里再來ps查看,會看到最右側(cè)多了一個hanfeng.com,這個就是兩個不同的池子
[root@hanfeng etc]# ps aux |grep php-fpm root 7731 0.0 0.4 227836 4964 ? Ss 22:32 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf) php-fpm 7732 0.0 0.4 227776 4708 ? S 22:32 0:00 php-fpm: pool www php-fpm 7733 0.0 0.4 227776 4708 ? S 22:32 0:00 php-fpm: pool www php-fpm 7734 0.0 0.4 227776 4708 ? S 22:32 0:00 php-fpm: pool www php-fpm 7735 0.0 0.4 227776 4708 ? S 22:32 0:00 php-fpm: pool www php-fpm 7736 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool www php-fpm 7737 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool www php-fpm 7738 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool www php-fpm 7739 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool www php-fpm 7740 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool www php-fpm 7741 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool www php-fpm 7742 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7743 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7744 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7745 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7746 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7747 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7748 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7749 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7750 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7751 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool www php-fpm 7752 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7753 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7754 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7755 0.0 0.4 227776 4712 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7756 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7757 0.0 0.4 227776 4716 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7758 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7759 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7760 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7761 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7762 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7763 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7764 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7765 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7766 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7767 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7768 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7769 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7770 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com php-fpm 7771 0.0 0.4 227776 4720 ? S 22:32 0:00 php-fpm: pool hanfeng.com root 7775 0.0 0.0 112676 988 pts/0 R+ 22:39 0:00 grep --color=auto php-fpm [root@hanfeng etc]# 在nginx中使用新的pool
[root@hanfeng etc]# cd /usr/local/nginx/conf/vhost/ [root@hanfeng vhost]# ls aaa.com.conf load.conf proxy.conf ssl.conf test.com.conf [root@hanfeng vhost]# 可以把test.com.conf定義成fastcgi_pass unix:/tmp/php-fcgi.sock; 這是www池子中的php-fcgi.sock
[root@hanfeng vhost]# vim test.com.conf server { listen 80; server_name test.com test1.com test2.com; index index.html index.htm index.php; root /data/wwwroot/test.com; if ($host != \'test.com\' ) { rewrite ^/(.*)$ http://test.com/$1 permanent; } # location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ # { # expires 7d; # access_log off; #} location ~* ^.+.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; if ($invalid_referer) { return 403; } access_log off; } location ~ .*.(js|css)$ { expires 12h; access_log off; } location /admin/ { allow 192.168.202.130; allow 127.0.0.1; deny all; } 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; } access_log /tmp/test.com.log combined_realip; } 再把另一個aaa.com.conf中 fastcgi_pass unix:/tmp/hanfeng.sock; 這是hanfeng.com池子中的hanfeng.sock 路徑/data/wwwroot/default$fastcgi_script_name;
[root@hanfeng vhost]# vim aaa.com.conf server { listen 80 default_server; server_name aaa.com; index index.html index.htm index.php; root /data/wwwroot/default; } location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/tmp/hanfeng.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name; } 保存退出 這樣這兩個站點就隔離開了 假設(shè)現(xiàn)在test.com請求量很大,最終將進(jìn)程耗盡了,比如php-fpm耗盡了,這時候又有其他請求來了,就會報502,因為沒有多余的php給進(jìn)程提供服務(wù)了,而另一個站點則不受影響,因為使用的是另一個池子,另一個pool,這就是定義多個池子的原因 方法二 在vhost目錄下是多個.conf文件,在nginx.conf里面加了一條 include vhost/*.conf;
[root@hanfeng vhost]# ls aaa.com.conf load.conf proxy.conf ssl.conf test.com.conf [root@hanfeng vhost]# tail ../nginx.conf tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/htm application/xml; include vhost/*.conf; } [root@hanfeng vhost]# 在php-fpm同樣是支持 include vhost/*.conf; 在主配置文件php-fpm中的 [global] 加入include = etc/php-fpm.d/*.conf ,并將池子拆分出來,將其中的池子pool刪除 快速刪除內(nèi)容方法,100dd就會給刪除
[root@hanfeng 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.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 [hanfeng.com] listen = /tmp/hanfeng.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 [root@hanfeng etc]#
最終如下
[root@hanfeng 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/,所以需要創(chuàng)建/php-fpm.d/的目錄
[root@hanfeng etc]# mkdir php-fpm.d [root@hanfeng etc]# 切換路徑,并創(chuàng)建www.conf,然后將之前php-fpm.conf中的www部分寫入到其中
[root@hanfeng etc]# cd !$ cd php-fpm.d [root@hanfeng php-fpm.d]# vim 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_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024 保存退出 然后在創(chuàng)建hanfeng.conf
[root@hanfeng php-fpm.d]# vim hanfeng.conf [hanfeng.com] listen = /tmp/hanfeng.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 保存退出 這樣看著就會很干凈,類似于nginx的vhost 檢查是否有錯誤
[root@hanfeng php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t [09-Jan-2018 23:28:58] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful [root@hanfeng php-fpm.d]# 然后重啟查看
[root@hanfeng php-fpm.d]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done [root@hanfeng php-fpm.d]# !ps ps aux |grep php-fpm root 7832 0.2 0.4 227864 4980 ? Ss 23:29 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf) php-fpm 7833 0.0 0.4 227804 4712 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7834 0.0 0.4 227804 4712 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7835 0.0 0.4 227804 4712 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7836 0.0 0.4 227804 4712 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7837 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7838 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7839 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7840 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7841 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7842 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7843 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7844 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7845 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7846 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7847 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7848 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7849 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7850 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7851 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7852 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool hanfeng.com php-fpm 7853 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool www php-fpm 7854 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool www php-fpm 7855 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool www php-fpm 7856 0.0 0.4 227804 4716 ? S 23:29 0:00 php-fpm: pool www php-fpm 7857 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool www php-fpm 7858 0.0 0.4 227804 4720 ? S 23:29 0:00 php-fpm: pool www php-fpm 7859 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7860 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7861 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7862 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7863 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7864 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7865 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7866 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7867 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7868 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7869 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7870 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7871 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www php-fpm 7872 0.0 0.4 227804 4724 ? S 23:29 0:00 php-fpm: pool www root 7874 0.0 0.0 112676 988 pts/0 R+ 23:29 0:00 grep --color=auto php-fpm [root@hanfeng php-fpm.d]# 這就是多個池子的配置方法 12.22 php-fpm慢執(zhí)行日志 php-fpm慢執(zhí)行日志目錄概要 vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下內(nèi)容
request_slowlog_timeout = 1 slowlog = /usr/local/php-fpm/var/log/www-slow.log 配置nginx的虛擬主機(jī)test.com.conf,把unix:/tmp/php-fcgi.sock改為unix:/tmp/www.sock 重新加載nginx服務(wù) vim /data/wwwroot/test.com/sleep.php//寫入如下內(nèi)容
<?php echo “test slow log”; sleep(2);echo “done”; ?> curl -x127.0.0.1:80 test.com/sleep.php cat /usr/local/php-fpm/var/log/www-slow.log php-fpm慢執(zhí)行日志 在做php網(wǎng)站的時候,建議使用lnmp,因為我們可以分析php的慢執(zhí)行 查詢方法: 1.系統(tǒng)負(fù)載,可以通過各種工具查,查出是哪個進(jìn)程導(dǎo)致 2.PHP網(wǎng)站訪問慢,通過查看慢日志 配置www.conf 在配置文件中加入
request_slowlog_timeout = 1 //超過一秒鐘就要記錄日志 slowlog = /usr/local/php-fpm/var/log/www-slow.log //日志放到該路徑下
最終如下
[root@hanfeng php-fpm.d]# vim 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_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024 request_slowlog_timeout = 1 slowlog = /usr/local/php-fpm/var/log/www-slow.log 保存退出 查看語法錯誤,并重新加載
[root@hanfeng php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t [10-Jan-2018 00:04:26] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful [root@hanfeng php-fpm.d]# /etc/init.d/php-fpm reload Reload service php-fpm done [root@hanfeng php-fpm.d]# 查看/usr/local/php-fpm/var/log/www-slow.log日志是否生成
[root@hanfeng php-fpm.d]# ls /usr/local/php-fpm/var/log/ php-fpm.log www-slow.log [root@hanfeng php-fpm.d]# 查看日志會看到?jīng)]有內(nèi)容,因為沒有超過一秒php執(zhí)行的過程
[root@hanfeng php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log [root@hanfeng php-fpm.d]# 模擬一個慢執(zhí)行的php,寫一個腳本,由于php-fcgi它是被在test這個站點用著,所以需要在這個/data/wwwroot/test.com目錄下做一些操作
[root@hanfeng php-fpm.d]# vim /data/wwwroot/test.com/sleep.php 加入php休眠兩秒鐘,故意讓它執(zhí)行慢 <?php echo “test slow log”; sleep(2);echo “done”; ?> 保存退出 php可以不換行,寫成一行 運行php腳本,但是未輸出信息,檢測會看到狀態(tài)碼為500,說明有錯誤
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php [root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I HTTP/1.1 500 Internal Server Error Server: nginx/1.12.1 Date: Tue, 09 Jan 2018 21:47:48 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30 [root@hf-01 php-fpm.d]# 可以查看錯誤日志,但有更簡單的方法就是打開它的配置文件
[root@hf-01 php-fpm.d]# vim /usr/local/php-fpm/etc/php.ini 搜索 /display ,找到display_errors 將display_errors = Off 改為display_errors = On 打開display_errors之后,就可以在瀏覽器上查看到具體的錯誤是什么 重啟php
[root@hf-01 php-fpm.d]# /etc/init.d/php-fpm reload Reload service php-fpm done [root@hf-01 php-fpm.d]# 檢查錯誤,會看到語法錯誤,有可能是逗號,分號寫的不對
[root@hf-01 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@hf-01 php-fpm.d]# 檢查sleep.php文件,發(fā)現(xiàn)里面使用的中文標(biāo)點,更改后重啟配置
[root@hf-01 php-fpm.d]# vim /data/wwwroot/test.com/sleep.php <?php echo "test slow log"; sleep(2); echo "done"; ?> 保存退出 [root@hf-01 php-fpm.d]# /etc/init.d/php-fpm reload Reload service php-fpm done [root@hf-01 php-fpm.d]# 再來測試,訪問成功,會看到訪問的時候停頓了幾秒
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php test slow logdone[root@hf-01 php-fpm.d]# 查看是否生成了慢日志
[root@hf-01 php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log [10-Jan-2018 06:02:21] [pool www] pid 3442 script_filename = /data/wwwroot/test.com/sleep.php //提示:是哪個腳本慢 [0x00007f37c5f7c298] sleep() /data/wwwroot/test.com/sleep.php:3 //提示:是腳本的第三慢 [root@hf-01 php-fpm.d]# 這個就是慢執(zhí)行日志的功效 在遇到php網(wǎng)站訪問慢的時候,就可以去查看慢日志 查看www.conf
[root@hf-01 php-fpm.d]# cat 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_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024 request_slowlog_timeout = 1 //一般寫兩秒,很多腳本都會超過一秒 slowlog = /usr/local/php-fpm/var/log/www-slow.log [root@hf-01 php-fpm.d]# 12.23 open_basedir php-fpm定義open_basedir目錄概要 vim /usr/local/php-fpm/etc/php-fpm.d/test.conf//加入如下內(nèi)容
php_admin_value[open_basedir]=/data/wwwroot/aming.com:/tmp/ 創(chuàng)建測試php腳本,進(jìn)行測試 再次更改aming.conf,修改路徑,再次測試 配置錯誤日志 再次測試 查看錯誤日志 php-fpm定義open_basedir open_basedir 的作用是限制php在指定的目錄里活動。 因為如果服務(wù)器管理多個網(wǎng)站,在php.ini里定義多個open_basedir就不合適了,所以要么在apache虛擬主機(jī)配置文件里面定義,要么在php-fpm配置文件里面定義,我們可以針對不同的池子(pool)定義對應(yīng)的open_basedir 只需要加 下面一行配置即可
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
- 如果路徑出錯,就會無法正常訪問,導(dǎo)致404頁面 curl直接連會提示“No input file specified.” 針對www的pool進(jìn)行配置 在最后一行加入配置
[root@hf-01 php-fpm.d]# vim /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_spare_servers = 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
[root@hf-01 php-fpm.d]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done [root@hf-01 php-fpm.d]# 訪問測試
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I HTTP/1.1 200 OK Server: nginx/1.12.1 Date: Tue, 09 Jan 2018 22:56:24 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30 [root@hf-01 php-fpm.d]# 若open_basedir定義錯誤,就會導(dǎo)致無法訪問,形成404狀態(tài)碼,輸出curl直接連會提示“No input file specified.” 定義錯誤日志
[root@hf-01 php-fpm.d]# vi /usr/local/php-fpm/etc/php.ini 搜索 /display_errors 將display_errors = Off 搜索 /error_log,添加error_log ;error_log = php_errors.log ; Log errors to syslog (Event Log on Windows). ;error_log = syslog error_log = /usr/local/php-fpm/var/log/php_errors.log //這一段定義錯誤日志 搜索error_reporting 注釋掉自帶的error_reporting ;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT error_reporting = E_ALL //定義錯誤日志的級別,所有 保存退出 display_errors = Off 正常情況下,在線上這個是off的,別人不能通過瀏覽器看到你的錯誤信息,而是把你的錯誤信息記錄到服務(wù)器的某一個文件里 查看設(shè)置的錯誤日志文件,并是否生成
[root@hf-01 php-fpm.d]# grep error_log /usr/local/php-fpm/etc/php.ini ; server-specific log, STDERR, or a location specified by the error_log ; Set maximum length of log_errors. In error_log information about the source is ;error_log = php_errors.log ;error_log = syslog error_log = /usr/local/php-fpm/var/log/php_errors.log ; OPcache error_log file name. Empty string assumes "stderr". ;opcache.error_log= [root@hf-01 php-fpm.d]# [root@hf-01 php-fpm.d]# ls /usr/local/php-fpm/var/log/ php-fpm.log www-slow.log [root@hf-01 php-fpm.d]# 手動生成錯誤日志文件,并設(shè)置權(quán)限為777,防止不能夠正常寫入
[root@hf-01 php-fpm.d]# touch /usr/local/php-fpm/var/log/php_errors.log [root@hf-01 php-fpm.d]# chmod 777 /usr/local/php-fpm/var/log/php_errors.log [root@hf-01 php-fpm.d]# 這里為了方便測試,故意將/usr/local/php-fpm/etc/php-fpm.d/www.conf 中的open_basedir路徑寫錯,來方便測試 重啟php-fpm
[root@hf-01 php-fpm.d]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done [root@hf-01 php-fpm.d]# 訪問測試,會看到顯示404
[root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I HTTP/1.1 404 Not Found Server: nginx/1.12.1 Date: Tue, 09 Jan 2018 23:35:31 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30 [root@hf-01 php-fpm.d]# 查看錯誤日志,會看到訪問地址有限制
[root@hf-01 php-fpm.d]# cat /usr/local/php-fpm/var/log/php_errors.log [09-Jan-2018 23:35:31 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/wwwroot/test.com/sleep.php) is not within the allowed path(s): (/data/wwwroot/111test.com:/tmp/) in Unknown on line 0 [09-Jan-2018 23:35:31 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 [root@hf-01 php-fpm.d]# 再將配置文件的open_basedir路徑修改過來,重新加載php-fpm,再來訪問,會看到正常顯示
[root@hf-01 php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf [root@hf-01 php-fpm.d]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done [root@hf-01 php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I HTTP/1.1 200 OK Server: nginx/1.12.1 Date: Tue, 09 Jan 2018 23:39:30 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30 [root@hf-01 php-fpm.d]# 12.24 php-fpm進(jìn)程管理 php-fpm進(jìn)程管理
[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_spare_servers = 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/ [root@hf-01 ~]# pm = dynamic //表示進(jìn)程以什么形式啟動,dynamic就是動態(tài),動態(tài)就是一開始為一個數(shù)值,根據(jù)需求再自動生成,服務(wù)器比較閑的時候還會去銷毀,銷毀到一定程度還有自動生成 pm.max_children = 50 //子進(jìn)程數(shù),ps aux可以查看 pm.start_servers = 20 //啟動服務(wù)時會啟動的進(jìn)程數(shù) pm.min_spare_servers = 5 //定義在空閑時段,子進(jìn)程數(shù)的最少數(shù)量,如果達(dá)到這個數(shù)值時,php-fpm服務(wù)會自動派生新的子進(jìn)程。 pm.max_spare_servers = 35 //定義在空閑時段,子進(jìn)程數(shù)的值,如果高于這個數(shù)值就開始清理空閑的子進(jìn)程。 pm.max_requests = 500 //定義一個子進(jìn)程最多處理的請求數(shù),也就是說在一個php-fpm的子進(jìn)程最多可以處理這么多請求,當(dāng)達(dá)到這個數(shù)值時,它會自動退出。 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/ dynamic和static pm = dynamic //表示進(jìn)程以什么形式啟動,dynamic就是動態(tài),動態(tài)就是一開始為一個數(shù)值,根據(jù)需求再自動生成,服務(wù)器比較閑的時候還會去銷毀,銷毀到一定程度還有自動生成;根據(jù)下面的設(shè)置去進(jìn)行設(shè)定“start_servers ”、“min_spare_servers ”、“max_spare_servers ”、“max_requests ” pm = static 之后,一旦選擇這個設(shè)置,下面的pm的各種設(shè)置只會有一個max_children生效,并啟動的時候就生成50個 擴(kuò)展
nginx中的root和alias區(qū)別
nginx的alias和root配置
更詳細(xì)
當(dāng)前標(biāo)題:Linux基礎(chǔ)(day53)
當(dāng)前鏈接:http://jinyejixie.com/article30/cphpso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、用戶體驗、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)