php-fpm.conf Detalizēti izskaidroti svarīgi parametri
pid = palaist / php-fpm.pid #pid设置 instalācijas direktorijā pēc noklusējuma ieteicams iespējot var/run/php-fpm.pid
error_log = log/php-fpm.log #错误日志 noklusējums ir var/log/php-fpm.log instalācijas direktorijā
log_level = paziņojums #错误级别. Pieejamie līmeņi ir: brīdinājums, kļūda, brīdinājums, paziņojums, atkļūdošana. Noklusējums: paziņojums.
emergency_restart_threshold = 60 emergency_restart_interval = 60. gadi # norāda, ka, ja php-cgi procesu skaits ar SIGSEGV vai SIGBUS kļūdām pārsniedz emergency_restart_threshold emergency_restart_interval vērtībā, php-fpm tiks graciozi restartēts. Šīs divas opcijas parasti paliek noklusējuma.
process_control_timeout = 0 #设置子进程接受主进程复用信号的超时时间. Pieejamās vienības: s (sekundes), m (minūtes), h (stundas) vai d (dienas) Noklusējuma vienības: s (sekundes). Noklusējums: 0.
daemonize = jā #后台执行fpm noklusējuma vērtība ir jā, un, ja vēlaties atkļūdot, varat to mainīt uz nē. FPM var izmantot dažādus iestatījumus, lai palaistu vairākus procesu baseinus. Šos iestatījumus var iestatīt atsevišķi katram procesu baseinam.
klausīties = 127.0.0.1:9000 #fpm监听端口, tas ir, adrese, ko PHP apstrādā nginx, parasti ir noklusējuma vērtība. Pieejamie formāti ir: 'ip:port', 'port', '/path/to/unix/socket'. Katrs procesu kopums ir jāiestata.
klausīties.backlog = -1 #backlog数, -1 nozīmē neierobežotu, ko nosaka operētājsistēma, vienkārši komentējiet šo rindu. Atsauce: http://www.3gyou.cc/?p=41
listen.allowed_clients = 127.0.0.1 #允许访问FastCGI进程的IP, iestatiet jebkuru, lai neierobežotu IP, ja vēlaties iestatīt citu resursdatoru nginx, lai piekļūtu šim FPM procesam, jums ir jāiestata IP adrese, kurai var piekļūt uz klausīšanās rēķina. Noklusējuma vērtība ir jebkura. Katra adrese ir atdalīta ar komatu. Ja tas nav iestatīts vai ir tukšs, jebkuram serverim ir atļauts pieprasīt savienojumu
klausīties.īpašnieks = www klausīties.grupa = www klausīties.režīms = 0666 #unix ligzdas iestatīšanas opciju, ja izmantojat TCP, lai piekļūtu, varat komentēt šeit.
lietotājs = www grupa = www #启动进程的帐户和组
pm = dinamiskais #对于专用服务器, pm var iestatīt uz statisku. #如何控制子进程 iespējas ir statiskas un dinamiskas. Ja ir atlasīts statisks, pm.max_children norāda fiksētu pakārtoto procesu skaitu. Ja tiek atlasīta dinamiska, to nosaka šādi parametri: pm.max_children #, maksimālais pakārtoto procesu skaits pm.start_servers #, procesu skaits startēšanas laikā pm.min_spare_servers #, garantējiet minimālo dīkstāves procesu skaitu un izveidojiet jaunu pakārtoto procesu, ja dīkstāves process ir mazāks par šo vērtību pm.max_spare_servers#, nodrošiniet maksimālo dīkstāves procesu skaitu, ja dīkstāves process ir lielāks par šo vērtību, tas tiks iztīrīts
pm.max_pieprasījumi = 1000 #设置每个子进程重生之前服务的请求数. Tas ir ļoti noderīgi trešo pušu moduļiem, kuriem var būt atmiņas noplūdes. Ja iestatīts uz "0", pieprasījums vienmēr tiek pieņemts. Līdzvērtīgs PHP_FCGI_MAX_REQUESTS vides mainīgajiem. Noklusējums: 0.
pm.status_path = /statuss #FPM状态页面的网址. Ja jums nav iestatījumu, nevarat piekļūt statusa lapai. Noklusējums: nav. Tiks izmantota Munin uzraudzība
ping.ceļš = /ping #FPM监控页面的ping网址. Ja jums nav iestatījumu, jūs nevarat piekļūt ping lapai. Šī lapa tiek izmantota, lai ārēji noteiktu, vai FPM ir dzīvs un var atbildēt uz pieprasījumiem. Ņemiet vērā, ka tam jāsākas ar slīpsvītru (/).
ping.atbilde = pongs #用于定义ping请求的返回相应. Atgriež tekstu teksta/vienkāršā formātā HTTP 200. Noklusējums: pongs.
request_terminate_timeout = 0 #设置单个请求的超时中止时间. Šī opcija var būt noderīga skriptiem, kas netiek pārtraukti kāda īpaša iemesla dēļ php.ini iestatījumos "max_execution_time". Iestatīts uz 0 nozīmē "Izslēgts". Varat mēģināt mainīt šo opciju, ja bieži rodas 502 kļūdas.
request_slowlog_timeout = 10 sekundes #当一个请求该设置的超时时间后 atbilstošā PHP zvanu steka informācija tiks ierakstīta lēnajā žurnālā. Iestatīts uz "0" nozīmē "Izslēgts"
slowlog = log/$pool.log.slow #慢请求的记录日志, lietot kopā ar request_slowlog_timeout
rlimit_files = 1024 #设置文件打开描述符的rlimit限制. Noklusējuma vērtība: noklusējuma atvērtais turis ir 1024, ko var skatīt ar ulimit -n un modificēt ar ulimit -n 2048.
rlimit_core = 0 #设置核心rlimit最大限制值. Pieejamās vērtības: "neierobežots", 0 vai pozitīvi veseli skaitļi. Noklusējuma vērtība: sistēmas definēta vērtība.
chroot = #启动时的Chroot目录. Definētajam direktorijam jābūt absolūtam ceļam. Ja nav iestatījuma, chroot netiek izmantots.
chdir = #设置启动目录, Chdir tiek automātiski nosūtīts uz šo direktoriju, kad tas tiek startēts. Definētajam direktorijam jābūt absolūtam ceļam. Noklusējums: pašreizējais direktorijs vai/direktorijs (ja tas ir sadalīts)
catch_workers_output = jā #重定向运行过程中的stdout和stderr到主要的错误日志文件中. Ja tas nav iestatīts, stdout un stderr tiks novirzīti uz /dev/null saskaņā ar FastCGI noteikumiem. Noklusējums: nulle.
PHP-FPM parametru regulēšana
pm = dinamisks; Norāda, kura procesa daudzuma pārvaldības metode tiek izmantota
Dinamisks nozīmē, ka PHP-FPM procesu skaits ir dinamisks, skaits ir pm.start_servers norādīts sākumā, ja ir vairāk pieprasījumu, tas automātiski palielināsies, lai nodrošinātu, ka dīkstāves procesu skaits nav mazāks par pm.min_spare_servers, un, ja procesu skaits ir liels, tas arī tiks attiecīgi iztīrīts, lai nodrošinātu, ka lieko procesu skaits nepārsniedz pm.max_spare_servers
statisks nozīmē, ka procesu skaits php-fpm ir statisks, un procesu skaits vienmēr ir pm.max_children norādītais skaits, un tas nepalielinās vai nesamazinās
pm.max_bērni = 300; PHP-FPM procesu skaits, kas ir iespējoti statiskajā režīmā pm.start_servers = 20; Sākuma php-fpm procesu skaits dinamiskajā režīmā pm.min_spare_servers = 5; Minimālais php-fpm procesu skaits dinamiskajā režīmā pm.max_rezerves_serveri = 35; Maksimālais php-fpm procesu skaits dinamiskajā režīmā
Ja pm ir statisks, tad derīgs ir tikai parametrs pm.max_children. Sistēma atvērs noteiktu skaitu php-fpm procesu
Ja PM ir dinamisks, tad parametrs pm.max_children ir nederīgs, un pēdējie trīs parametri stājas spēkā. Sistēma sāks pm.start_servers php-fpm procesus php-fpm palaišanas sākumā un pēc tam dinamiski pielāgos php-fpm procesu skaitu starp pm.min_spare_servers un pm.max_spare_serveriem atbilstoši sistēmas vajadzībām
Tātad, kuru PM metodi labāk izvēlēties mūsu serverim? Faktiski, tāpat kā Apache, PHP programmu palaišanai pēc izpildes būs vairāk vai mazāk atmiņas noplūdes problēmas. Tāpēc php-fpm process sākumā aizņem tikai aptuveni 3M atmiņu, un pēc kāda laika tas palielināsies līdz 20-30M.
Serveriem ar lielu atmiņu (piemēram, 8G vai vairāk) faktiski ir lietderīgāk norādīt statisko max_children, jo tas neprasa papildu procesa kontroli un uzlabo efektivitāti. Tā kā bieža php-fpm procesu pārslēgšana arī aizkavēs laiku, labāk būs ieslēgt statiskos efektus, kad atmiņa ir pietiekami liela. Summu var iegūt arī saskaņā ar atmiņu/30M, piemēram, 8GB atmiņu var iestatīt uz 100, tad php-fpm patērēto atmiņu var kontrolēt 2G-3G. Ja atmiņa ir nedaudz mazāka, piemēram, 1G, tad statisko procesu skaita norādīšana ir vairāk labvēlīga servera stabilitātei. Tas nodrošina, ka php-fpm saņem tikai pietiekami daudz atmiņas un piešķir nelielu atmiņas daudzumu citām lietojumprogrammām, kas padarīs sistēmu vienmērīgāku.
Serverim ar nelielu atmiņu, piemēram, VPS ar 256M atmiņu, pat ja tas tiek aprēķināts pēc 20M atmiņas apjoma, 10 php-cgi procesi patērēs 200M atmiņu, tad sistēmas avārijai jābūt normālai. Tāpēc jums vajadzētu mēģināt kontrolēt php-fpm procesu skaitu un pēc tam, kad ir aptuveni noskaidrota citu lietojumprogrammu aizņemtā atmiņa, norādiet statisku nelielu skaitu, kas padarīs sistēmu stabilāku. Vai arī izmantojiet dinamisko metodi, jo dinamiskā metode izbeigs lieko procesu un atgūs atmiņu, tāpēc ieteicams to izmantot serveros vai VPS ar mazāku atmiņu. Konkrētais maksimālais daudzums tiek iegūts, pamatojoties uz atmiņu/20M. Piemēram, 512M VPS ieteicams iestatīt pm.max_spare_servers uz 20. Kas attiecas uz pm.min_spare_servers, ieteicams to iestatīt atbilstoši servera slodzei, un piemērotākā vērtība ir starp 5 ~ 10.
200 serverī ar 4G atmiņu ir labi (mana 1G testa mašīna, 64 ir labākā, ieteicams izmantot stresa testu, lai iegūtu vislabāko vērtību)
pm.max_pieprasījumi = 10240;
Lielākā problēma nginx php-fpm konfigurācijas procesā ir iekšējā noplūdes problēma: servera slodze nav liela, bet atmiņas aizņemtība strauji palielinās, ātri apēdot atmiņu un pēc tam sākot ēst mijmaiņas nodalījumu, un sistēma ātri uzkaras! Faktiski, saskaņā ar oficiālo ievadu, php-cgi nav atmiņas noplūdes, un php-cgi atgūs atmiņu pēc katra pieprasījuma pabeigšanas, bet netiks izlaists operētājsistēmai, kas izraisīs lielu atmiņas daudzumu, ko aizņem php-cgi.
Oficiālais risinājums ir samazināt PHP_FCGI_MAX_REQUESTS vērtību, ja tiek izmantots php-fpm, atbilstošais php-fpm.conf ir max_requests, kas nozīmē, cik pieprasījumu tiks nosūtīti, lai restartētu pavedienu, mums šī vērtība ir attiecīgi jāsamazina, lai php-fpm automātiski atbrīvotu atmiņu, nevis lielāko daļu no 51200 internetā utt., Patiesībā ir vēl viena ar to saistīta vērtība max_ bērni, tas ir, cik daudz procesu tiks izveidoti katru reizi, kad php-fpm, lai faktiskais atmiņas patēriņš būtu max_children*max_requests* Katrs pieprasījums izmanto atmiņu, saskaņā ar to mēs varam novērtēt atmiņas lietojumu, tāpēc nav nepieciešams rakstīt skriptus, lai nogalinātu.
request_terminate_timeout = 30;
Maksimālais izpildes laiks, konfigurējams php.ini (max_execution_time)
request_slowlog_timeout = 2; Lēno žurnālu ieslēgšana slowlog = log/$pool.log.slow; Lēns žurnāla ceļš
rlimit_files = 1024; Pievienots php-fpm ierobežojums, lai atvērtu failu deskriptorus
|