Dalam aplikasi web trafik tinggi, untuk mengendalikan permintaan pengguna dengan lebih baik, kami biasanya menggunakan pelbagai proses untuk mengendalikan berbilang permintaan pada masa yang sama. Dalam PHP, menggunakan FPM (Pengurus Proses FastCGI) untuk pengurusan berbilang proses adalah cara biasa. Walau bagaimanapun, jika pelayan web kami mempunyai terlalu banyak proses, ia akan memberi terlalu banyak beban pada sumber pelayan apabila mengendalikan trafik yang besar, menyebabkan pelayan ranap. Oleh itu, adalah sangat penting untuk mengkonfigurasi pengurus proses PHP dengan betul. Artikel ini menerangkan cara menetapkan bilangan proses PHP dengan betul.
Sebelum mengkonfigurasi bilangan proses PHP, kita perlu memahami Pengurus Proses PHP dan cara ia berfungsi.
FPM ialah pengurus PHP FastCGI yang boleh mengurus semua proses PHP dan menyediakan berbilang kumpulan proses. Setiap kumpulan proses mempunyai bilangan tertentu proses PHP, yang boleh ditentukan atau dikira berdasarkan CPU dan memori pelayan.
Apabila permintaan dibuat untuk fail PHP, Nginx atau Apache akan memajukan permintaan itu kepada pengurus FPM, yang akan memilih salah satu proses PHP berdasarkan algoritma pengimbangan beban. Proses PHP melaksanakan kod dan menghantar respons kembali ke Nginx atau Apache, yang akhirnya dikembalikan kepada klien.
Adalah penting untuk memilih bilangan proses PHP mengikut situasi sebenar. Jika bilangan proses terlalu kecil, ia mungkin tidak dapat menahan beban trafik yang tinggi jika bilangan proses terlalu banyak, sumber pelayan akan dibazirkan.
Kami boleh menganggarkan bilangan proses PHP yang diperlukan oleh pelayan melalui formula berikut:
max_children = ((Jumlah RAM - Memori yang digunakan oleh proses lain) / Memori yang digunakan oleh satu proses anak PHP )
Antaranya,
max_children ialah bilangan maksimum proses anak PHP.
Jumlah RAM ialah jumlah keseluruhan memori pada pelayan.
Memori yang digunakan oleh proses lain ialah jumlah memori yang diduduki oleh proses lain, yang boleh dilihat menggunakan arahan atas atau ps.
Memori yang digunakan oleh satu proses anak PHP ialah penggunaan memori setiap proses PHP dan boleh dianggarkan menggunakan arahan berikut.
php -r 'echo memory_get_usage(true);'
Ini akan mengembalikan integer dalam bait. Untuk menukar ini kepada MB, bahagikan nombor itu dengan 1024 x 1024 untuk mendapatkan jumlah memori yang digunakan oleh setiap proses PHP.
Kami boleh menentukan bilangan proses dalam fail php.ini dan melaraskan nombor ini berdasarkan ketersediaan sumber pelayan.
Dalam fail php.ini, anda boleh menemui parameter berikut:
pm = dinamik
pm.max_children = 20
pm.start_servers = 2
pm. min_spare_servers = 1
pm.max_spare_servers = 3
Ini adalah parameter utama yang mempengaruhi proses PHP. pm mewakili pengurus proses (pengurus proses dinamik digunakan di sini), pm.max_children mewakili bilangan maksimum proses anak, pm.start_servers mewakili bilangan proses anak apabila didayakan, pm.min_spare_servers mewakili bilangan proses anak tersimpan, pm .max_spare_servers mewakili Bilangan maksimum proses terbiar yang boleh dibuat.
Selepas menganggarkan mengikut formula dalam langkah kedua, tetapkan pm.max_children kepada nilai yang sepadan dan laraskan parameter lain berdasarkan ketersediaan sumber pelayan.
Setelah bilangan proses dikonfigurasikan dan ditetapkan, kita perlu memantaunya dengan kerap untuk memastikan ia berfungsi dengan baik dalam keadaan penuh atau terang keadaan beban berjalan.
Anda boleh menggunakan arahan atas atau htop untuk memantau kesihatan pelayan. Alat ini akan memaparkan semua proses pada pelayan dan penggunaan sumbernya.
Jika kami mendapati bilangan proses terlalu banyak atau terlalu sedikit, kami boleh melaraskan bilangan proses mengikut situasi sebenar dan memerhati sama ada keadaan operasinya bertambah baik.
Dalam aplikasi web beban tinggi, adalah sangat penting untuk mengkonfigurasi bilangan proses PHP dengan betul. Kita boleh menggunakan kaedah di atas untuk menganggarkan bilangan proses yang diperlukan oleh pelayan dan menentukan strategi terbaik untuk penalaan parameter. Memantau bilangan proses PHP secara kerap adalah satu lagi faktor utama dalam memastikan aplikasi anda berjalan dengan stabil di bawah beban trafik yang tinggi.
Atas ialah kandungan terperinci Bagaimana untuk menetapkan bilangan proses PHP dengan betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!