Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 11218|Atbildi: 4

PHP-FPM parametru konfigurācija un regulēšana

[Kopēt saiti]
Publicēts 26.07.2017 09:20:54 | | |
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





Iepriekšējo:Alibaba Cloud SLB slodzes balansēšanas HTTP darbspējas pārbaudes kļūmju analīze
Nākamo:DZ x3.4 failu pārbaudes trūkstošie faili
 Saimnieks| Publicēts 28.11.2021 13:42:00 |
[Prakse] Pārbaudiet php-fpm statusa informāciju, izmantojot Nginx
https://www.itsvse.com/thread-10180-1-1.html
 Saimnieks| Publicēts 19.12.2021 10:48:43 |
 Saimnieks| Publicēts 16.01.2022 15:26:55 |
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep max_spare_servers
;             pm.max_spare_servers - maksimālais bērnu skaits dīkstāvē
; Noklusējuma vērtība: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.max_rezerves_serveri = 35
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep min_spare_servers
;             pm.min_spare_servers – minimālais dīkstāvē esošo bērnu skaits
; Noklusējuma vērtība: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.min_spare_servers = 5
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep start_servers
;             pm.start_servers - startēšanas laikā izveidoto bērnu skaits.
pm.start_servers = 20
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep max_requests
pm.max_pieprasījumi = 10240
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep request_slowlog_timeout
; Piezīme: slowlog ir obligāts, ja request_slowlog_timeout ir iestatīts
; request_slowlog_timeout = 0
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep lēnā žurnāls
; - "lēns logs"
; Piezīme: slowlog ir obligāts, ja request_slowlog_timeout ir iestatīts
slowlog = /alidata/log/php/$pool.log.slow
; Izmests uz "slowlog" failu. Vērtība "0s" nozīmē "izslēgts".
; request_slowlog_timeout = 0
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep rlimit
; Iestatiet atvērtā faila deskriptora rlimit pamatprocesam.
; rlimit_files = 1024
; Iestatiet maksimālo kodola izmēru rlimit galvenajam procesam.
; rlimit_core = 0
; Iestatiet atvērtā faila deskriptora rlimit.
; rlimit_files = 1024
; Iestatiet maksimālo kodola izmēru rlimit.
; rlimit_core = 0
[root@old_server conf] #
 Saimnieks| Publicēts 16.01.2022 16:54:04 |
request_terminate_timeout = 10 sekundes

Noklusējuma vērtība ir 0 sekundes, kas nozīmē, ka PHP skripts turpinās darboties. Tādā veidā, kad visi php-cgi procesi ir aizņemti, Nginx + PHP tīmekļa serveris vairs nevar apstrādāt jaunus PHP pieprasījumus, un Nginx lietotājam atgriezīs "502 Bad Gateway". request_terminate_timeout = 30s var izmantot
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com