Rumah >pembangunan bahagian belakang >tutorial php >PHP-FPM TUNING: Menggunakan ' PM Static ' untuk prestasi maks
mata utama
pm static
pm static
Ia harus ditetapkan mengikut bilangan maksimum proses PHP-FPM yang boleh dikendalikan oleh pelayan tanpa menjejaskan prestasi CPU. pm.max_children
pm dynamic
mungkin lebih sesuai. Tetapan ini boleh menjimatkan ingatan dengan menyesuaikan bilangan subprocesses berdasarkan beban semasa, tetapi juga boleh menyebabkan masalah overhead apabila turun naik lalu lintas berlaku. pm ondemand
Manuskrip asal artikel itu pada asalnya diterbitkan di Haydenjames.io tanpa mengedit dan diterbitkan semula di sini dengan izin dari penulis.
Marilah kita dengan cepat belajar cara terbaik untuk menubuhkan PHP-FPM untuk throughput tinggi, latensi rendah, dan lebih banyak CPU dan penggunaan memori. Secara lalai, kebanyakan tetapan menetapkan PM (Pengurus Proses) rentetan PHP-FPM ke dinamik, dan OnDemand biasanya disyorkan jika anda menghadapi masalah memori yang ada. Walau bagaimanapun, mari kita bandingkan kedua -dua pilihan pengurusan ini berdasarkan dokumentasi php.net dan bandingkan pilihan kegemaran saya untuk tetapan trafik yang tinggi - PM statik:
pm = dynamic
, pm.max_children
, pm.start_servers
, pm.min_spare_servers
. pm.max_spare_servers
pm = ondemand
. pm.start_servers
pm = static
. pm.max_children
Lihat senarai lengkap arahan PHP-FPM.CONF global untuk maklumat lanjut.
persamaan Pengurus Proses PHP-FPM (PM) dan pengawal selia CPUFREQNIX dan Windows Systems, dan dapat meningkatkan prestasi dan responsif sistem dengan mengubah tetapan pengatur CPU dari ondemand ke prestasi*. Kali ini, mari kita bandingkan penerangan dan cari persamaan:
Governor = ondemand
: Skala dinamik kekerapan CPU mengikut beban semasa. Lompat ke frekuensi tertinggi dan kemudian mengurangkan kekerapan apabila masa terbiar meningkat. Governor = conservative
: Skala dinamik kekerapan mengikut beban semasa. Kekerapan skala yang lebih lancar daripada OnDemand. Governor = performance
: Sentiasa jalankan CPU pada frekuensi maksimum. Lihat senarai lengkap pilihan pengawal selia CPUFREQ untuk maklumat lanjut.
Adakah anda melihat persamaannya? Saya ingin menggunakan perbandingan ini terlebih dahulu, dengan matlamat mencari cara terbaik untuk menulis artikel, mengesyorkan pm static
php-fpm sebagai pilihan pertama anda.
Untuk pengawal selia CPU, tetapan prestasi adalah rangsangan prestasi yang cukup selamat, kerana ia hampir sepenuhnya bergantung kepada batasan CPU pelayan anda. Faktor lain hanya kesan sampingan seperti haba, hayat bateri (komputer riba), dan menetapkan kekerapan CPU secara kekal hingga 100%. Setelah ditetapkan untuk prestasi, ia adalah persediaan terpantas untuk CPU. Sebagai contoh, baca tentang tetapan force_turbo
pada Raspberry Pi, yang memaksa papan RPI anda menggunakan pengawal selia prestasi, dan penambahbaikan prestasi lebih ketara kerana kelajuan jam CPU yang rendah.
pm static
mencapai prestasi maksimum pelayan php-fpm pm static
atau pm ondemand
mungkin pilihan yang lebih baik. Sebaliknya, jika anda mempunyai memori yang cukup, anda boleh mengelakkan kebanyakan Pengurus Proses PHP (PM) overhead dengan menetapkan dynamic
ke kapasiti maksimum pelayan. Dalam erti kata lain, apabila anda melakukan pengiraan, pm static
harus ditetapkan kepada bilangan maksimum proses PHP-FPM yang boleh dijalankan tanpa membuat ketersediaan memori atau masalah tekanan cache. Juga, jangan terlalu tinggi untuk mengatasi CPU (s) dan menyebabkan banyak operasi PHP-FPM yang tidak diproses. pm.static
Dalam imej di atas, pm = static
dan pm.max_children = 100
pelayan ini menggunakan sehingga kira -kira 10GB daripada memori dipasang 32GB. Sila ambil perhatian lajur tafsiran diri yang diserlahkan. Semasa tangkapan skrin ini, terdapat kira -kira 200 "pengguna aktif" dalam Google Analytics (60 saat terakhir). Pada tahap ini, kira-kira 70% proses kanak-kanak PHP-FPM masih terbiar. Ini bermakna bahawa PHP-FPM sentiasa ditetapkan kepada kapasiti maksimum sumber pelayan tanpa mengira trafik semasa. Proses terbiar tetap dalam talian, menunggu puncak lalu lintas dan bertindak balas dengan segera, bukannya perlu menunggu PM untuk menanam proses kanak -kanak dan kemudian menutupnya selepas pm.process_idle_timeout
tamat. Saya telah menetapkan pm.max_requests
sangat tinggi kerana ini adalah pelayan pengeluaran tanpa kebocoran memori PHP. Jika anda mempunyai keyakinan 110% dalam skrip PHP semasa dan masa depan, anda boleh menggunakan pm.max_requests = 0
dalam statik. Walau bagaimanapun, adalah disyorkan untuk memulakan semula skrip dengan kerap. Tetapkan bilangan permintaan ke nombor yang lebih tinggi, kerana perkara itu adalah untuk mengelakkan overhead PM. Sebagai contoh, sekurang -kurangnya pm.max_requests = 1000
, bergantung kepada nombor pm.max_children
anda dan permintaan sesaat.
tangkapan skrin ini ditapis menggunakan Linux top
, oleh pilihan "U" (pengguna) dan nama pengguna PHP-FPM. Bilangan proses yang dipaparkan hanya kira-kira 50 (tiada pengiraan), tetapi pada dasarnya top
memaparkan statistik peringkat atas yang sesuai dengan tetingkap terminal anda-dalam kes ini, disusun oleh CPU %. Untuk melihat semua proses 100 PHP-FPM, anda boleh menggunakan arahan berikut:
<code>top -bn1 | grep php-fpm</code>
pm ondemand
dan dynamic
Menggunakan pm dynamic
, anda mungkin melihat ralat yang serupa dengan yang berikut:
<code>WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children</code>
Anda boleh cuba meningkatkan/menyesuaikan tetapan, tetapi anda masih akan melihat ralat yang sama seperti yang diterangkan dalam siaran ServerFault. Dalam kes ini, , terutamanya dan
Soalan Lazim Mengenai Pelarasan PHP-FPM (FAQ) PHP-FPM meningkatkan prestasi laman web dengan berkesan menguruskan proses PHP. Ia menggunakan proses utama untuk mengawal pelbagai proses kanak -kanak yang memproses skrip PHP. Ini membolehkan penggunaan sumber pelayan yang cekap, kerana proses terbiar dapat ditamatkan dan proses baru dapat dihasilkan seperti yang diperlukan. Di samping itu, PHP-FPM menyokong Caching Opcode, yang boleh mempercepatkan pelaksanaan PHP dengan menyimpan bytecode skrip yang telah dikompilasi dalam memori bersama, menghapuskan keperluan untuk PHP untuk memuatkan dan menghuraikan skrip pada setiap permintaan.
Beberapa alat tersedia untuk memantau prestasi PHP-FPM. Alat ini termasuk halaman status PHP-FPM (yang menyediakan maklumat mengenai keadaan semasa proses pekerja) dan pelbagai alat baris arahan seperti Beberapa amalan terbaik dengan PHP-FPM termasuk: Penyesuaian Pengaturan Pengurus Proses untuk Memadankan Sumber dan Mod Lalu Lintas; Di samping itu, pastikan anda menyimpan perisian PHP-FPM dan pelayan web sehingga kini untuk memanfaatkan penambahbaikan prestasi terkini dan pembetulan keselamatan. pm.min
terlalu rendah dan sukar untuk menyesuaikan dengan betul kerana trafik rangkaian berubah -ubah dengan palung dan puncak. Nasihat biasa adalah menggunakan pm dynamic
. Walau bagaimanapun, ini lebih teruk lagi kerana apabila terdapat sedikit atau tidak lalu lintas, pm ondemand
akan menutup proses terbiar ke 0, dan kemudian anda akan berakhir dengan masalah overhead sebanyak yang berubah -ubah - melainkan, tentu saja, anda akan Jadilah masa tamat yang ditetapkan untuk sangat tinggi ... Dalam kes ini, anda hanya perlu menggunakan ondemand
tinggi pm.static
. pm.max_requests
PM dynamic
, boleh menjimatkan sumber anda. Sebagai contoh, tuan rumah beberapa akaun cPanel atau beberapa laman web di bawah kolam yang berbeza. Sebagai contoh, saya mempunyai pelayan yang mempunyai lebih daripada 100 akaun cPanel dan kira -kira 200 nama domain, ondemand
dan juga pm.static
tidak melakukannya dengan baik. Hanya dynamic
boleh melaksanakan dengan baik, kerana lebih daripada dua pertiga laman web mempunyai sedikit trafik. Menggunakan ondemand
, ini bermakna bahawa semua proses kanak -kanak akan ditutup, menjimatkan banyak memori pelayan! Syukurlah, pemaju cPanel telah menyelesaikan masalah ini dan kini ia mungkir kepada ondemand
. Sebelum ini, disebabkan oleh penggunaan ondemand
secara lalai, ia menjadikan PHP-FPM pilihan pada pelayan bersama walaupun pada kolam/akaun CPanel PHP-FPM yang terbiar. Jika anda menerima trafik yang baik, anda tidak mungkin menjadi tuan rumah pada pelayan dengan sejumlah besar kolam PHP-FPM (tuan rumah bersama). dynamic
Dalam PHP-FPM, sebaik sahaja anda mula menyediakan sejumlah besar trafik, ondemand
pengurus proses PHP-FPM mungkin mengehadkan throughput disebabkan oleh overhead yang wujud. Fahami sistem anda dan tetapkan proses PHP-FPM anda untuk memadankan kapasiti maksimum pelayan. Mulakan dengan tetapan penggunaan maksimum berdasarkan dynamic
atau pm dynamic
dan meningkat ke titik di mana memori dan CPU boleh mengendalikan tanpa dibanjiri. Anda akan melihat bahawa menggunakan ondemand
adalah kerana anda membiarkan segala -galanya berada dalam ingatan, dari masa ke masa, puncak lalu lintas akan menyebabkan CPU menjadi puncak dan beban pelayan dan purata CPU akan lebih lancar. Saiz purata proses PHP-FPM anda berbeza-beza oleh pelayan web dan perlu diselaraskan secara manual, jadi mengapa pengurus proses overhead yang lebih automatik- pm.max_children
dan pm static
-sa cadangan yang lebih popular. Semoga artikel ini membantu anda. dynamic
ondemand
PHP-FPM atau FastCGI Process Manager adalah pelaksanaan PHP FastCGI yang lain yang mempunyai beberapa ciri tambahan yang berguna untuk laman web dari mana-mana saiz, terutama untuk laman web yang sibuk. Adalah penting untuk prestasi pelayan kerana ia membolehkan pelayan mengendalikan lebih banyak permintaan daripada pelawat serentak dengan memanfaatkan kolam pekerja. Proses ini bertanggungjawab untuk menguraikan fail PHP, menghasilkan kandungan dinamik dan memberikannya kepada pelanggan. Dengan mengurus proses ini dengan berkesan, PHP-FPM dapat meningkatkan prestasi dan skalabiliti pelayan dengan ketara.
Bagaimana PHP-FPM meningkatkan prestasi laman web saya?
Apakah konfigurasi
pm static
dalam PHP-FPM dan bagaimana ia mempengaruhi prestasi? pm static
Dalam php-fpm konfigurasi
Bagaimana untuk menyesuaikan PHP-FPM untuk prestasi maksimum? pm
Melaraskan PHP-FPM untuk prestasi maksimum melibatkan penalaan tetapan konfigurasi berganda. Tetapan ini termasuk tetapan pm.max_children
yang menentukan pengurus proses untuk digunakan, dan tetapan pm.start_servers
yang menetapkan bilangan maksimum proses kanak -kanak. Tetapan penting lain termasuk pm.min_spare_servers
, pm.max_spare_servers
dan
Apakah masalah biasa dengan PHP-FPM dan bagaimana saya boleh menyelesaikannya? pm.max_children
Beberapa masalah biasa dengan PHP-FPM termasuk penggunaan CPU yang tinggi, masa tindak balas yang perlahan, dan kesilapan yang berkaitan dengan mencapai bilangan maksimum proses kanak-kanak. Masalah ini sering dapat diselesaikan dengan menyesuaikan tetapan konfigurasi PHP-FPM, seperti menambahkan
Bagaimana PHP-FPM dibandingkan dengan pengendali PHP yang lain?
Bolehkah saya menggunakan php-fpm dengan mana-mana pelayan web?
Apakah Caching Opcode dan bagaimana ia meningkatkan prestasi PHP? Bagaimana untuk memantau prestasi PHP-FPM?
top
dan ps
. Di samping itu, terdapat beberapa penyelesaian pemantauan pihak ketiga yang menyediakan metrik dan makluman yang lebih terperinci. Apakah beberapa amalan terbaik untuk menggunakan PHP-FPM?
Atas ialah kandungan terperinci PHP-FPM TUNING: Menggunakan ' PM Static ' untuk prestasi maks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!