Kif Tevita li PHP-FPM Jikkonsma Wisq RAM fil-Linux


Jekk użajt munzell LEMP (Linux, NGINX, MySQL/MariaDB, u PHP), allura probabilment qed tuża FastCGI proxy fi ħdan NGINX (bħala server HTTP), għall-ipproċessar PHP. PHP-FPM (akronimu ta 'FastCGI Process Manager) hija implimentazzjoni PHP FastCGI alternattiva li tintuża ħafna u ta' prestazzjoni għolja.

Hawn huma l-gwidi utli dwar it-twaqqif ta 'LEMP Stack fil-Linux.

  • Kif tinstalla LEMP Stack ma' PhpMyAdmin f'Ubuntu 20.04
  • Kif Tinstalla LEMP Server fuq CentOS 8
  • Kif Tinstalla LEMP fuq Debian 10 Server

Riċentement, il-websajts PHP kollha tagħna fuq wieħed mis-servers tal-web LEMP tagħna saru bil-mod u eventwalment waqfu jirrispondu meta tidħol fis-server. skoprejna li s-sistema kienet qed taħdem baxxa fuq RAM: PHP-FPM kien ikkunsmat il-biċċa l-kbira tar-RAM, kif indikat fil-screenshot li ġej (ħares – għodda ta 'monitoraġġ tas-sistema).

$ glances

F'dan l-artikolu, ser nuru kif nipprevjenu li PHP-FPM jikkunsmaw wisq jew il-memorja tas-sistema kollha tiegħek (RAM) fil-Linux. Fl-aħħar ta 'din il-gwida, titgħallem kif tnaqqas il-konsum tal-memorja PHP-FPM b'50% jew aktar.

Naqqas l-Użu tal-Memorja PHP-FPM

Wara li għamilna xi riċerka fuq l-Internet, skoprejna li kellna bżonn nikonfiguraw mill-ġdid il-maniġer tal-proċess PHP-FPM u ċerti aspetti tiegħu biex innaqqsu l-konsum tal-memorja ta 'PHP-FPM fil-fajl tal-konfigurazzjoni tal-pool.

Il-ġabra awtomatika hija www u l-fajl tal-konfigurazzjoni tiegħu jinsab fuq /etc/php-fpm.d/www.conf (fuq CentOS/RHEL/Fedora) jew /etc/php/7.4/fpm/pool.d/www.conf ( fuq Ubuntu/Debian/Mint).

$ sudo vim /etc/php-fpm.d/www.conf             [On CentOS/RHEL/Fedora]
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf    [On Ubuntu/Debian/Mint]

Sib id-direttivi li ġejjin u ssettja l-valur tagħhom skont il-każ tal-użu tiegħek. Għal direttivi li jiġu kkummentati, trid tneħħihom il-kumment.

pm = ondemand
pm.max_children = 80
pm.process_idle_timeout = 10s
pm.max_requests = 200

Ejja nispjegaw fil-qosor id-direttivi ta’ hawn fuq u l-valuri tagħhom. Id-direttiva pm tiddetermina kif il-maniġer tal-proċess se jikkontrolla n-numru ta 'proċessi tfal. Il-metodu default huwa dinamiku, li jfisser li n-numru ta 'tfal (proċessi tat-tfal) huwa stabbilit b'mod dinamiku skont xi direttivi oħra inklużi pm.max_children li jiddefinixxi n-numru massimu ta' tfal li jistgħu jkunu ħajjin fl-istess ħin.

L-iktar maniġer tal-proċess ideali huwa l-iskema ondemand fejn l-ebda proċessi tfal ma jinħoloq fl-istartjar iżda jitnisslu fuq talba. Il-proċessi tat-tfal huma forked biss meta talbiet ġodda se jgħaqqdu bbażati fuq il-pm.max_children u pm.process_idle_timeout li jiddefinixxi n-numru ta' sekondi li wara jinqatel proċess idle.

Fl-aħħar iżda mhux l-inqas, għandna bżonn nissettjaw il-parametru pm.max_requests li jiddefinixxi n-numru ta 'talbiet li kull proċess tifel għandu jesegwixxi qabel ma jerġa' jbid. Innota li dan il-parametru jista 'jintuża wkoll bħala soluzzjoni għal tnixxijiet tal-memorja fil-libreriji ta' partijiet terzi.

Referenza: Mod aħjar biex tmexxi PHP-FPM.

Wara li għamilt dawn il-konfigurazzjonijiet ta 'hawn fuq, innutajt li l-użu ta' RAM issa huwa tajjeb fuq is-server tagħna. Għandek xi ħsibijiet x'taqsmu relatati ma' dan is-suġġett jew mistoqsijiet? Ikseb magħna permezz tal-formola ta' feedback hawn taħt.