Saat menginstal php, mereka yang berhati-hati akan menemukan bahwa kami juga menginstal modul php-fpm. Modul fpm bertanggung jawab untuk memproses proses permintaan. Operasi terkait fpm akan secara langsung mempengaruhi berapa banyak permintaan yang dapat ditanggapi oleh server. Pengaturan yang tepat akan secara efektif meningkatkan efisiensi pemrosesan, jika tidak, batas waktu gateway 502 atau kesalahan 504 akan terjadi.
Mari buka file www.conf di bawah /etc/php/7.2/fpm/pool.d dan temukan parameter berikut:
pm=dynamicpm.max_children=5pm.start_servers=14.min_spare_servers=1pm.max_spare_servers=3;pm.max_requests=500
Ini adalah parameter default setelah penulis menginstal PHP. Saya akan menjelaskannya satu per satu di bawah ini:
Dinamika pertama menunjukkan bahwa mode pemrosesan dari proses tersebut adalah dinamis, dan ada juga mode statis yang sesuai dengannya.
Jika pm disetel ke staic, maka hanya parameter pm.max_childern yang akan berpengaruh.
Jika pm diatur ke dinamis, empat parameter berikutnya akan berlaku. Sistem akan memulai proses php-fpm pm.start_servers ketika php-fpm mulai berjalan, dan kemudian secara dinamis menyesuaikan jumlah proses php-fpm antara pm.min_spare_servers dan pm.max_spare_servers sesuai dengan kebutuhan sistem.
Parameter kedua pm.max_children menunjukkan jumlah maksimum proses yang dapat di-fork (dimulai). Tentunya, semakin besar jumlahnya, semakin banyak permintaan yang dapat dibuat pada saat yang bersamaan. Tentu saja, tidak akan ada koneksi yang lambat atau waktu tunggu permintaan yang lama, tetapi CPU atau memori akan tetap tersedia. Nilai ini mengacu pada jumlah proses php-fpm yang dibuka dalam mode statis, dan membatasi jumlah maksimum proses php-fpm dalam mode dinamis.
Parameter ketiga pm.start_servers menunjukkan bahwa jika dalam mode dinamis, beberapa proses akan dimulai pada keadaan awal, dan kemudian disesuaikan secara dinamis sesuai kebutuhan, dan ditentukan oleh dua parameter pm.min_spare_servers dan pm.max_spare_servers.
Parameter keempat pm.min_spare_servers mewakili jumlah minimum proses php-fpm dalam keadaan idle dalam mode dinamis, dan jumlah yang dipertahankan setelah membersihkan proses idle
Parameter kelima pm.max_spare_servers mewakili jumlah maksimum proses php-fpm dalam keadaan idle dalam mode dinamis, yaitu ketika proses idle mencapai nilai ini, proses tersebut dibersihkan.
Parameter keenam pm.max_requests menunjukkan jumlah permintaan sebelum menghentikan proses dan memulai ulang, yang dapat menghindari kebocoran memori.
Jelas max_children di sini adalah 5, yang pada awalnya sudah cukup, seiring dengan meningkatnya trafik, pasti tidak akan cukup. Mari kita bicara tentang pengaturan nilai spesifik. Dampak paling langsung adalah nilai pm.max_children : Jika memori dan sumber daya sistem CPU memungkinkan, semakin besar semakin baik. Berikut adalah metode perhitungannya, misalnya proses fpm sekitar 15~25M 150~300 saat digunakan sepenuhnya. , lalu amati status server dan lakukan penyesuaian
Secara umum, server memori besar (seperti 32 dan 64G ke atas) dapat mempertimbangkan mode statis, yang memiliki efek konkurensi yang baik. Server memori kecil dapat mempertimbangkan mode dinamis, yang dapat dikontrol secara otomatis sesuai permintaan.
Anda dapat melakukan stress test sesuai dengan situasi Anda sendiri dan melakukan penyesuaian sesuai dengan kondisi server Anda sendiri.