Jika Anda telah menerapkan LEMP (Linux , NGINX , MySQL/MariaDB , dan PHP ) tumpukan, maka Anda mungkin menggunakan FastCGI proxy dalam NGINX (sebagai server HTTP), untuk pemrosesan PHP. PHP-FPM (singkatan dari FastCGI Process Manager ) adalah alternatif yang banyak digunakan dan berkinerja tinggi PHP FastCGI implementasi.
Berikut adalah panduan berguna untuk menyiapkan LEMP Stack di Linux.
- Cara Menginstal LEMP Stack dengan PhpMyAdmin di Ubuntu 20.04
- Cara Menginstal LEMP Server di CentOS 8
- Cara Menginstal LEMP di Server Debian 10
Baru-baru ini, semua PHP . kami situs web di salah satu LEMP . kami server web menjadi lambat dan akhirnya berhenti merespons saat masuk ke server. kami menemukan bahwa sistem kehabisan RAM:PHP-FPM telah menghabiskan sebagian besar RAM, seperti yang ditunjukkan pada tangkapan layar berikut (sekilas – alat pemantauan sistem).
$ glances
Dalam artikel ini, kami akan menunjukkan cara mencegah PHP-FPM dari menghabiskan terlalu banyak atau semua memori sistem Anda (RAM ) di Linux. Di akhir panduan ini, Anda akan mempelajari cara mengurangi PHP-FPM konsumsi memori hingga 50% atau lebih.
Kurangi Penggunaan Memori PHP-FPM
Setelah melakukan beberapa penelitian di Internet, kami menemukan bahwa kami perlu mengkonfigurasi ulang PHP-FPM manajer proses dan aspek tertentu untuk mengurangi konsumsi memori PHP-FPM dalam file konfigurasi kumpulan.
Kumpulan default adalah www dan file konfigurasinya terletak di /etc/php-fpm.d/www.conf (di CentOS/RHEL/Fedora ) atau /etc/php/7.4/fpm/pool.d/www.conf (di 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 membatalkan komentarnya.
pm = ondemand pm.max_children = 80 pm.process_idle_timeout = 10s pm.max_requests = 200
Mari kita jelaskan secara singkat arahan di atas dan nilainya. pm direktif menentukan bagaimana manajer proses akan mengontrol jumlah proses anak. Metode defaultnya adalah dinamis , yang berarti jumlah anak (proses anak) disetel secara dinamis bergantung pada beberapa arahan lain termasuk pm.max_children yang menentukan jumlah maksimum anak yang dapat hidup pada saat yang sama.
Manajer proses yang paling ideal adalah ondemand skema di mana tidak ada proses anak yang dibuat saat startup tetapi muncul sesuai permintaan. Proses turunan hanya bercabang ketika permintaan baru akan terhubung berdasarkan pm.max_children dan pm.process_idle_timeout yang menentukan jumlah detik setelah proses idle akan dihentikan.
Terakhir, kita perlu menyetel pm.max_requests parameter yang menentukan jumlah permintaan yang harus dijalankan oleh setiap proses anak sebelum pemijahan ulang. Perhatikan bahwa parameter ini juga dapat digunakan sebagai solusi untuk kebocoran memori di perpustakaan pihak ketiga.
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? Hubungi kami melalui formulir masukan di bawah.