日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php中的fpm_PHP中的FPM是做什么的

發(fā)布時(shí)間:2023/12/2 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php中的fpm_PHP中的FPM是做什么的 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

FPM是FastCGI Process Manager的縮寫,由全稱我們可以知道其和FastCGI有關(guān),就是一個(gè)FastCGI的進(jìn)程管理器。對(duì)于FastCGI我們可以理解成一個(gè)協(xié)議,兒FPM是其在PHP中的一個(gè)實(shí)現(xiàn)。

FPM的出現(xiàn)實(shí)現(xiàn)了PHP應(yīng)用的分布式部署,這樣使得PHP和web服務(wù)器可以在不同的機(jī)器上。當(dāng)然與其說(shuō)是FPM不如說(shuō)是FastCGI的出現(xiàn)。最初FPM并沒(méi)有被PHP的官方正式應(yīng)用于PHP中,只是作為PHP的一個(gè)補(bǔ)丁應(yīng)用。但是自從PHP5.3.3版本以后FPM被正式捆綁進(jìn)PHP中,作為了PHP的一部分。這樣我們配置起來(lái)比較方便,只需在PHP編譯的時(shí)候添加—enable-fpm選項(xiàng)即可

php-5.6.9]# ./configure –enable-fpm

Fpm 的簡(jiǎn)單配置

Fpm在php編譯的時(shí)候添加—enable-fpm選項(xiàng)即可啟動(dòng)fpm,此外在編譯的時(shí)候還有兩個(gè)選項(xiàng)分別是 –with-fpm-user=USER 和—with-fpm-group=GROUP,用來(lái)設(shè)定fpm所屬的用戶和用戶組。如果不指定這兩項(xiàng),那默認(rèn)的用戶和用戶組都是nobody。當(dāng)然這兩項(xiàng)也可以在fpm的配置文件php-fpm.conf(其所在目錄為PHP安裝目錄/etc/php-fpm.conf)中修改。

user = nobody

//所屬用戶

group = nobody

//所屬組

listen = 127.0.0.1:9000

//fpm所在服務(wù)器的ip地址和監(jiān)聽(tīng)的端口號(hào),默認(rèn)為9000

pm = dynamic

//設(shè)置進(jìn)程管理器是如何管理子進(jìn)程的,dynamic動(dòng)態(tài)管理至少會(huì)有一個(gè)子進(jìn)程被創(chuàng)建,其數(shù)量有個(gè)最大值由pm.max_children來(lái)設(shè)定,而創(chuàng)建的數(shù)量由pm.start_servers來(lái)設(shè)定;static 靜態(tài)管理設(shè)置固定數(shù)量的子進(jìn)程隨著服務(wù)啟動(dòng)而被創(chuàng)建;ondemand 在服務(wù)啟動(dòng)的時(shí)候并不創(chuàng)建子進(jìn)程只是當(dāng)有請(qǐng)求的時(shí)候才根據(jù)情況創(chuàng)建。

pm.max_children = 10

//當(dāng)pm設(shè)置為static的時(shí)候,此值表示隨著服務(wù)的啟動(dòng)創(chuàng)建的子進(jìn)程的數(shù)量;當(dāng)pm設(shè)置為dynamic或者ondemand的時(shí)候,此值表示創(chuàng)建的子進(jìn)程最多不能超過(guò)此數(shù)量

pm.start_servers = 2

//表示隨著服務(wù)啟動(dòng)創(chuàng)建的子進(jìn)程(注意這里是子進(jìn)程而不是線程)的數(shù)量,此選項(xiàng)只有在pm 設(shè)置為dynamic的時(shí)候才有效。并且這個(gè)值默認(rèn)設(shè)置為 min_spare_servers + (max_spare_servers – min_spare_servers)/2,并且如果此值設(shè)為0,那么創(chuàng)建的子進(jìn)程的數(shù)量也是由上述公式?jīng)Q定。

pm.min_spare_servers = 1

//要求閑置的服務(wù)進(jìn)程的數(shù)量的最小值

pm.max_spare_servers = 3

//閑置的服務(wù)進(jìn)程的數(shù)量的最大值

pm.process_idle_timeout = 10s

//進(jìn)程的閑置時(shí)間,以秒為單位,超過(guò)這個(gè)時(shí)間該進(jìn)程將會(huì)被殺死

Fpm 的應(yīng)用

下面我們來(lái)看一下如何管理fastcgi服務(wù),首先我們可以進(jìn)入php安裝目錄

~]# cd /usr/local/php5

php5]# ./sbin/php-fpm

//開啟fastcgi服務(wù),開啟服務(wù)以后會(huì)在/usr/local/php5/var/run/php-fpm.pid中有fastcgi主進(jìn)程id

php5]# kill –INT `cat /usr/local/php5/var/run/php-fpm.pid`

//關(guān)閉fastcgi服務(wù)

php5]# kill –USR2 ` cat /usr/local/php5/var/run/php-fpm.pid`

//重啟fastcgi服務(wù)

Fpm 使用說(shuō)明

在fpm簡(jiǎn)單配置中我們提到pm=dynamic和pm.start_servers =2。當(dāng)開啟fastcgi服務(wù)以后首先我們查看 php-fpm.pid

php5]# cat /usr/local/php5/var/run/php-fpm.pid //其結(jié)果為

32407

php5]# ps x | grep php-fpm //接著我們使用此命令查看其主進(jìn)程情況

32407 ? Ss 0:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)

php5]# ps –ef | grep php-fpm //然后再使用該命令查看其所有進(jìn)程情況

root 32407 1 0 13:46 ? 00:00:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)

nobody 32408 32407 0 13:46 ? 00:00:00 php-fpm: pool www

nobody 32409 32407 0 13:46 ? 00:00:00 php-fpm: pool www

在這里我們看到了三條信息,第一條是主進(jìn)程,由系統(tǒng)創(chuàng)建,其id為32407,父進(jìn)程id為1。剩余兩條是其子進(jìn)程,因?yàn)樵趐m.start_servers = 2 我們?cè)O(shè)置的為2,所以隨著服務(wù)的啟動(dòng)會(huì)創(chuàng)建兩個(gè)子進(jìn)程。這兩個(gè)子進(jìn)程的用戶都是nobody(user=nobody),其進(jìn)程id分別是 32408、32409,第三項(xiàng)是這兩個(gè)子進(jìn)程的父進(jìn)程的id 32407。

當(dāng)然fpm至少會(huì)創(chuàng)建一個(gè)子進(jìn)程,因?yàn)槿绻鹲tart_servers 設(shè)置為0 那么其會(huì)根據(jù)上面我們說(shuō)的那個(gè)公式計(jì)算出子進(jìn)程的數(shù)量。當(dāng)然如果我們?cè)O(shè)置min_spare_servers 和max_spare_servers都為0,那子進(jìn)程的數(shù)量為0,這樣的話是不能啟動(dòng)服務(wù)的(這些設(shè)置有效的前提是pm設(shè)為dynamic)。因?yàn)閒pm使用用戶為nobody的子進(jìn)程來(lái)處理請(qǐng)求的,那個(gè)由系統(tǒng)創(chuàng)建的主進(jìn)程——id為32407,所屬用戶為root——是不能處理請(qǐng)求的。當(dāng)然我們可以根據(jù)我們服務(wù)器的實(shí)際情況(例如:內(nèi)存大小)來(lái)優(yōu)化我們這里的進(jìn)程數(shù)量。

以上只是簡(jiǎn)單的介紹了fpm的配置與使用,目的就是為了說(shuō)明fpm的作用。

本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!

總結(jié)

以上是生活随笔為你收集整理的php中的fpm_PHP中的FPM是做什么的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。