Setélan PHP-FPM: anggo pm statik pikeun pagelaran maksimal

Setélan PHP-FPM: anggo pm statik pikeun pagelaran maksimal

Versi unedited tina artikel ieu asalna diterbitkeun dina haydenjames.io sarta diterbitkeun di dieu kalawan idin nya pangarang.

Kuring gé ngabejaan Anjeun dina nutshell kumaha pangalusna pikeun ngonpigurasikeun PHP-FPM pikeun ngaronjatkeun throughput, ngurangan latency, sarta ngagunakeun CPU jeung memori leuwih konsistén. Sacara standar, garis PM (manajer prosés) dina PHP-FPM nyaéta dinamis, jeung lamun teu boga cukup memori, mangka leuwih hade pikeun masang seueur anu mesen. Hayu urang ngabandingkeun 2 pilihan kontrol dumasar kana dokuméntasi php.net tur tingal kumaha favorit kuring béda ti aranjeunna statik pm pikeun lalu lintas volume tinggi:

pm = dinamis - Jumlah prosés anak dikonpigurasi sacara dinamis dumasar kana arahan ieu: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = paménta - prosés dijieun dina paménta (sabalikna tina kreasi dinamis, lamun pm.start_servers dibuka nalika layanan dimimitian).
pm = statik - Jumlah prosés anak dibereskeun sareng dituduhkeun ku parameter pm.max_children.

Pikeun detil, tingali daptar lengkep diréktif global php-fpm.conf.

Kamiripan antara manajer prosés PHP-FPM sareng pengontrol frékuénsi CPU

Ieu sigana offtopic, tapi Kaula bade numbu ieu topik konfigurasi PHP-FPM. Saha anu teu acan ngalaman slowdown prosésor sahenteuna sakali - dina laptop, mesin virtual atawa dedicated server? Inget skala frékuénsi CPU? pilihan ieu sadia pikeun nix jeung Windows bisa ningkatkeun kinerja sistem na responsiveness ku cara ngarobah setelan throttle processor ti seueur anu mesen dina kinerja*. Waktos ieu, hayu urang ngabandingkeun déskripsi sareng ningali kamiripan:

gubernur=ondemand - skala dinamis frékuénsi processor gumantung kana beban ayeuna. Gancang luncat ka frékuénsi maksimum lajeng ngurangan éta salaku période inactivity ngaronjat.
gubernur=konservatif= skala frékuénsi dinamis gumantung kana beban ayeuna. Ngaronjatkeun sareng ngirangan frékuénsi langkung lancar tibatan ondemand.
Gubernur = kinerja - frékuénsi salawasna maksimum.

Pikeun detil, tingali daptar lengkep parameter regulator frékuénsi processor.

Ningali kamiripan? Abdi hoyong nunjukkeun perbandingan ieu pikeun ngayakinkeun yén éta pangsaéna pikeun dianggo pm statik pikeun PHP-FPM.

Pikeun parameter regulator processor kinerja mantuan pikeun aman ningkatkeun kinerja sabab ampir sakabéhna gumantung kana wates CPU server urang. Salian ieu, tangtosna, aya ogé faktor sapertos suhu, ngeusi batre (dina laptop) sareng efek samping sanésna anu terus-terusan ngajalankeun prosésor dina 100%. Setelan kinerja ensures kinerja processor panggancangna. Baca, contona, ngeunaan force_turbo parameter dina buah prambus Pikalawan nu panel RPi bakal ngagunakeun regulator nu kinerja, dimana pamutahiran kinerja bakal leuwih noticeable alatan speed jam CPU low.

Ngagunakeun pm statik pikeun ngahontal kinerja server maksimum

Pilihan PHP-FPM pm statik sakitu legana gumantung kana bebas memori dina server. Lamun memori low, eta leuwih hade milih seueur anu mesen atawa dinamis. Di sisi anu sanésna, upami anjeun gaduh mémori, anjeun tiasa ngahindarkeun manajer prosés PHP overhead ku netepkeun pm statik ka kapasitas server maksimum. Dina basa sejen, lamun sagalana diitung ogé, anjeun kudu ngadegkeun pm.statik nepi ka volume maksimum prosés PHP-FPM nu bisa dieksekusi, tanpa nyieun masalah sareng memori low atanapi cache. Tapi henteu saluhureun éta ngagentos prosesor sareng ngumpulkeun sakumpulan operasi PHP-FPM ngantosan dieksekusi..

Setélan PHP-FPM: anggo pm statik pikeun pagelaran maksimal

Dina screenshot di luhur, server boga pm = statik jeung pm.max_children = 100, sarta ieu nyokot kira 10 GB kaluar tina sadia 32. Nengetan kolom disorot, sagalana jelas dieu. Dina screenshot ieu aya kira 200 pamaké aktip (leuwih ti 60 detik) dina Google Analytics. Dina tingkat ieu, kurang leuwih 70% tina PHP-FPM prosés anak masih dianggurkeun. Ieu ngandung harti yén PHP-FPM salawasna disetel ka jumlah maksimum sumberdaya server paduli lalulintas ayeuna. Prosés dianggurkeun ngantosan puncak lalu lintas sareng ngaréspon langsung. Anjeun teu kedah ngantosan dugi pm bakal nyieun prosés anak lajeng nungtungan aranjeunna nalika jaman béakna pm.process_idle_timeout. Kuring nyetel nilai ka luhur pisan pm.max_requestssabab ieu mangrupikeun server anu tiasa dianggo kalayan henteu aya bocor memori dina PHP. Anjeun tiasa install pm.max_requests = 0 kalawan statik lamun anjeun sagemblengna yakin kana Aksara PHP aya jeung nu bakal datang. Tapi leuwih sae pikeun ngajalankeun deui naskah kana waktu. Nyetél angka nu gede ngarupakeun requests, sabab urang hayang ulah aya waragad pm teu perlu. Contona, sahenteuna pm.max_requests = 1000 - gumantung kana kuantitas pm.max_children jeung jumlah requests per detik.

Potret layar nunjukkeun paréntah Linux luhur, disaring ku u (pamaké) jeung ngaran pamaké PHP-FPM. Ngan kahiji 50 prosés atawa ceuk ditémbongkeun (Kuring teu cacah persis), tapi dasarna luhur nembongkeun statistik luhur nu pas kana jandela terminal. Dina hal ieu diurutkeun ku% CPU (% CPU). Pikeun ningali sadaya 100 prosés PHP-FPM, jalankeun paréntah:

top -bn1 | grep php-fpm

Iraha nganggo pm ondemand sareng dinamis

Upami anjeun nganggo pm dinamis, kasalahan sapertos kieu lumangsung:

WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children

Coba ngarobah parameter, kasalahan moal dileungitkeun, kawas dijelaskeun dina pos ieu dina Serverfault. Dina hal ieu, nilai pm.min leutik teuing, sareng kumargi patalimarga wéb variasina pisan sareng gaduh puncak anu luhur sareng lebak anu jero, sesah nyaluyukeun pm anu cekap. dinamis. Biasana pm dianggo seueur anu mesen, sakumaha disarankan dina pos sarua. Tapi ieu malah parah, sabab seueur anu mesen terminates prosés dianggurkeun ka nol lamun aya saeutik atawa euweuh lalulintas, sarta anjeun bakal tetep nepi ka overhead ngarobah lalulintas. Kacuali, tangtosna, anjeun nyetél waktos ngantosan anu ageung. Teras langkung saé dianggo pm.statik + angka luhur pm.max_requests.

PM dinamis sareng utamina seueur anu mesen tiasa dianggo upami anjeun gaduh sababaraha kolam renang PHP-FPM. Salaku conto, anjeun ngagaduhan sababaraha akun cPanel atanapi sababaraha situs wéb dina kolam renang anu béda. Kuring boga server kalawan, sebutkeun, 100+ rekening cpanel sarta ngeunaan 200 domain, sarta pm.static atawa malah dinamis moal nyalametkeun kuring. Kabéh nu peryogi didieu nyaeta seueur anu mesen, Barina ogé, leuwih ti dua per tilu situs web narima saeutik atawa euweuh lalulintas, sarta kalawan seueur anu mesen kabéh prosés anak bakal layu atawa gugur, nu bakal nyalametkeun urang loba memori! Untungna, pamekar cPanel perhatikeun ieu sareng nyetél nilai standar seueur anu mesen. Saméméhna, nalika standar éta dinamis, PHP-FPM teu cocog pikeun server dibagikeun sibuk pisan. Loba geus dipaké suPHP, sabab pm dinamis memori dihakan sanajan kalawan pools dianggurkeun sarta akun cPanel PHP-FPM. Paling dipikaresep, lamun lalulintas anu alus, anjeun moal hosted on server kalawan jumlah badag pools PHP-FPM (shared hosting).

kacindekan

Upami anjeun nganggo PHP-FPM sareng lalu lintas anjeun beurat, manajer prosés seueur anu mesen и dinamis pikeun PHP-FPM bakal diwatesan throughput alatan overhead alamiah maranéhanana. Ngartos sistem anjeun sarta ngonpigurasikeun prosés PHP-FPM nurutkeun kapasitas server maksimum. Set kahiji pm.max_children gumantung kana pamakéan pm maksimum dinamis atawa seueur anu mesen, lajeng ningkatkeun nilai ieu ka tingkat mana mémori jeung processor bakal dianggo tanpa overloaded. Anjeun bakal aya bewara nu mibanda pm statik, Kusabab anjeun gaduh sagalana dina mémori, lalulintas spikes bakal ngabalukarkeun pangsaeutikna paku CPU kana waktu, sarta server na beban CPU averages bakal level kaluar. Rata-rata ukuran prosés PHP-FPM gumantung kana pangladén wéb sareng peryogi konfigurasi manual, janten langkung seueur manajer prosés anu otomatis dinamis и seueur anu mesen - leuwih populér. Kuring miharep artikel ieu mangpaat.

UPDAT Ditambahkeun bagan patokan ab. Lamun prosés PHP-FPM aya dina mémori, ngaronjatkeun kinerja di expense konsumsi memori dimana maranéhna diuk na antosan. Manggihan pilihan pangalusna pikeun diri.

Setélan PHP-FPM: anggo pm statik pikeun pagelaran maksimal

sumber: www.habr.com

Tambahkeun komentar