Rumah >pembangunan bahagian belakang >tutorial php >PHP-FPM TUNING: Menggunakan ' PM Static ' untuk prestasi maks

PHP-FPM TUNING: Menggunakan ' PM Static ' untuk prestasi maks

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2025-02-09 08:25:13563semak imbas

PHP-FPM tuning: Using 'pm static' for Max Performance

mata utama

    Untuk pelayan memori yang mencukupi, penetapan
  • php-fpm menyediakan output yang tinggi dan latensi rendah. Tetapan ini membolehkan proses PHP-FPM mengekalkan kapasiti maksimum pada setiap masa, membolehkan tindak balas pesat ke puncak lalu lintas tanpa perlu menjana proses baru. pm static
  • Menggunakan
  • Pelarasan yang berhati -hati diperlukan untuk mengelakkan memori yang tidak mencukupi atau masalah tekanan cache. pm static Ia harus ditetapkan mengikut bilangan maksimum proses PHP-FPM yang boleh dikendalikan oleh pelayan tanpa menjejaskan prestasi CPU. pm.max_children
  • untuk pelayan dengan pelbagai kolam PHP-FPM atau memori yang rendah,
  • atau 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
  • Pemantauan dan penalaan biasa konfigurasi PHP-FPM adalah penting untuk prestasi optimum tanpa mengira tetapan yang anda pilih. Saiz purata proses PHP-FPM berbeza dari pelayan ke pelayan dan memerlukan pelarasan manual dan pemahaman yang jelas mengenai corak sumber dan trafik pelayan.

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:

  • : Bilangan proses kanak -kanak ditetapkan secara dinamik mengikut arahan berikut: pm = dynamic, pm.max_children, pm.start_servers, pm.min_spare_servers. pm.max_spare_servers
  • : Proses ini dihasilkan atas permintaan yang diperlukan, yang berbeza dari dinamik, yang bermula pada perkhidmatan bermula pm = ondemand. pm.start_servers
  • : Bilangan proses kanak -kanak ditetapkan oleh 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 CPUFREQ

Ini mungkin kelihatan sedikit dari topik, tetapi saya ingin mengaitkannya dengan topik php-FPM kami. Ok, kita semua mempunyai kelajuan CPU yang perlahan pada satu ketika, sama ada komputer riba, mesin maya, atau pelayan khusus. Ingat skala kekerapan CPU? (CPUFREQ Regulator.) Tetapan ini boleh didapati di kedua -dua

NIX 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.

Gunakan pm static mencapai prestasi maksimum pelayan

php-fpm Tetapan sangat bergantung pada berapa banyak memori pelayan. Pada asasnya, jika anda menghadapi masalah dengan memori pelayan yang tidak mencukupi, maka 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>

Bila Menggunakan 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, 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 Walau bagaimanapun, apabila anda mempunyai pelbagai kolam PHP-FPM,

, terutamanya 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

Kesimpulan

Dalam PHP-FPM, sebaik sahaja anda mula menyediakan sejumlah besar trafik,

dan 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

Kemas kini: Menambah carta perbandingan penanda aras A/B. Mempunyai proses PHP-FPM berada dalam ingatan membantu meningkatkan prestasi, tetapi dengan kos peningkatan penggunaan memori untuk memastikan mereka dalam keadaan menunggu. Cari titik terbaik untuk tetapan anda.

Soalan Lazim Mengenai Pelarasan PHP-FPM (FAQ) PHP-FPM tuning: Using 'pm static' for Max Performance

Apakah php-fpm dan mengapa penting untuk prestasi pelayan saya?

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?

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.

Apakah konfigurasi pm static dalam PHP-FPM dan bagaimana ia mempengaruhi prestasi?

pm static Dalam php-fpm konfigurasi

menetapkan bilangan proses kanak-kanak ke nombor tetap. Ini bermakna bahawa akan sentiasa ada bilangan proses tertentu yang siap untuk memenuhi permintaan masuk tanpa mengira beban pelayan semasa. Ini boleh membawa kepada prestasi yang lebih baik di bawah beban tinggi, kerana proses baru tidak diperlukan untuk dijana. Walau bagaimanapun, ia juga boleh membawa kepada penggunaan memori yang lebih tinggi, kerana mereka sentiasa berjalan walaupun proses ini tidak diperlukan.

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

, yang mengawal bilangan pelayan bermula, bilangan minimum pelayan terbiar, dan bilangan maksimum pelayan masing -masing. Melaraskan tetapan ini untuk memadankan sumber dan corak lalu lintas pelayan dapat meningkatkan prestasi dengan ketara.

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

tetapan atau beralih ke pengurus proses yang berbeza. Di samping itu, alat pemantauan boleh digunakan untuk mengenal pasti kesesakan dan isu prestasi.

Bagaimana PHP-FPM dibandingkan dengan pengendali PHP yang lain?

PHP-FPM biasanya dianggap lebih cekap dan fleksibel daripada pengendali PHP yang lain. Ia menyokong pelbagai pengurus proses dan boleh diselaraskan mengikut sumber dan corak lalu lintas pelayan. Di samping itu, PHP-FPM menyokong caching OPCode dan boleh mengendalikan sejumlah besar permintaan serentak, menjadikannya sesuai untuk laman web yang sibuk.

Bolehkah saya menggunakan php-fpm dengan mana-mana pelayan web?

Ya, PHP-FPM boleh digunakan dengan mana-mana pelayan web yang menyokong protokol FastCGI. Ini termasuk pelayan web yang popular seperti Apache, Nginx, dan LightTPD.

Apakah Caching Opcode dan bagaimana ia meningkatkan prestasi PHP?

Caching Opcode adalah teknologi yang meningkatkan prestasi PHP dengan menyimpan bytecode skrip precompiled dalam memori bersama. Ini menghapuskan keperluan PHP untuk memuatkan dan menghuraikan skrip pada setiap permintaan, mengurangkan masa pelaksanaan.

Bagaimana untuk memantau prestasi PHP-FPM?

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 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?

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.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Pengesahan bentuk dengan PHPArtikel seterusnya:Pengesahan bentuk dengan PHP