Bagaimana mencegah php-fpm mengonsumsi terlalu banyak RAM di linux

Bagaimana mencegah php-fpm mengonsumsi terlalu banyak RAM di linux

Jika Anda telah menggunakan a Lemp (Linux, Nginx, Mysql/mariadb, Dan Php) Tumpukan, maka Anda mungkin menggunakan Fastcgi Proksi di dalam Nginx (Sebagai server HTTP), untuk pemrosesan PHP. Php-fpm (akronim dari Fastcgi Process Manager) adalah alternatif yang banyak digunakan dan berkinerja tinggi Php fastcgi penerapan.

Berikut adalah panduan yang berguna untuk menyiapkan Tumpukan Lemp di linux.

  • Cara menginstal tumpukan lemp dengan phpMyadmin di ubuntu 20.04
  • Cara Menginstal Server Lemp di Centos 8
  • Cara Menginstal Lemp di Debian 10 Server

Baru -baru ini, semua milik kami Php situs web di salah satu dari kami Lemp Server web menjadi lambat dan akhirnya berhenti merespons saat masuk ke server. Kami menemukan bahwa sistem itu berjalan rendah pada RAM: Php-fpm telah mengkonsumsi sebagian besar RAM, seperti yang ditunjukkan dalam tangkapan layar berikut (Glance - System Monitoring Tool).

$ melirik 
PLINT - Alat Pemantauan Sistem

Dalam artikel ini, kami akan menunjukkan cara mencegah Php-fpm dari terlalu banyak mengonsumsi atau semua memori sistem Anda (Ram) di Linux. Di akhir panduan ini, Anda akan belajar cara mengurangi Php-fpm konsumsi memori sebesar 50% atau lebih.

Kurangi penggunaan memori PHP-FPM

Setelah melakukan riset di internet, kami menemukan bahwa kami perlu mengkonfigurasi ulang Php-fpm Manajer proses dan aspek-aspek tertentu untuk mengurangi konsumsi memori PHP-FPM di file konfigurasi kumpulan.

Kolam default adalah www dan file konfigurasinya terletak di /etc/php-fpm.d/www.conf (pada Centos/rhel/fedora) atau /etc/php/7.4/fpm/pool.d/www.conf (pada 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] 

Temukan arahan berikut dan atur nilainya agar sesuai dengan kasus penggunaan Anda. Untuk arahan yang dikomentari, Anda perlu menghapus komentar mereka.

PM = OnDemand PM.max_children = 80 sore.process_idle_timeout = 10s pm.MAX_REQUESTS = 200 

Mari kita jelaskan secara singkat arahan di atas dan nilainya. Itu pm Petunjuk menentukan bagaimana manajer proses akan mengontrol jumlah proses anak. Metode defaultnya adalah dinamis, yang berarti jumlah anak (proses anak) ditetapkan secara dinamis tergantung pada beberapa arahan lain termasuk pm.max_children yang mendefinisikan jumlah maksimum anak -anak yang bisa hidup pada saat yang sama.

Manajer proses yang paling ideal adalah Ondemand Skema di mana tidak ada proses anak yang dibuat saat startup tetapi ditelusuri sesuai permintaan. Proses anak hanya bercabang ketika permintaan baru akan terhubung berdasarkan pm.max_children Dan pm.Process_idle_timeout yang mendefinisikan jumlah detik setelah itu proses idle akan dibunuh.

Terakhir, kita perlu mengatur pm.MAX_REQUESTS parameter yang mendefinisikan jumlah permintaan yang harus dijalankan oleh setiap proses anak sebelum pemijahan kembali. Perhatikan bahwa parameter ini juga dapat digunakan sebagai solusi untuk kebocoran memori di perpustakaan pihak ke -3.

Referensi: Cara yang lebih baik untuk menjalankan php-fpm.

Setelah membuat konfigurasi di atas, saya perhatikan Ram Penggunaan sekarang baik -baik saja di server kami. Apakah Anda memiliki pemikiran untuk dibagikan terkait dengan topik atau pertanyaan ini? Jangkau kami melalui formulir umpan balik di bawah ini.