Apakah php fpm berulir tunggal?
PHP-FPM (atau Fast Process Manager) menawarkan beberapa keunggulan dibandingkan mod_php, dengan dua yang paling menonjol adalah lebih fleksibel untuk dikonfigurasi dan saat ini merupakan mode yang disukai untuk menjalankan PHP oleh banyak komunitas. Namun, jika Anda menggunakan pengaturan konfigurasi default pengelola paket, kemungkinan besar Anda tidak akan mendapatkan hasil maksimal darinya Show Dalam posting ini, saya akan memberikan gambaran singkat tentang cara meningkatkan kinerja PHP-FPM, dengan membahas tiga jenis manajer proses PHP-FPM, dan mana yang terbaik untuk digunakan dalam keadaan apa. PHP-FPM dapat menggunakan salah satunya
Mari kita lihat masing-masing dengan sedikit detail StatisStatis memastikan sejumlah proses anak selalu tersedia untuk menangani permintaan pengguna. Ini diatur dengan. Dalam mode ini, permintaan tidak perlu menunggu proses baru dimulai, yang menjadikannya pendekatan tercepat Dengan asumsi bahwa Anda ingin menggunakan konfigurasi statis dengan 10 proses anak selalu tersedia, Anda akan mengonfigurasinya di
Untuk melihat apakah perubahan konfigurasi sudah efektif, setelah memulai ulang PHP-FPM, jalankan _DinamisDalam mode ini, PHP-FPM secara dinamis mengatur jumlah proses anak yang tersedia dan memastikan setidaknya satu proses anak selalu tersedia Konfigurasi ini menggunakan lima pilihan konfigurasi;
Sekarang bagian yang menyenangkan datang; SettingValuemax_children(Total RAM – Memori yang digunakan untuk Linux, DB, dll. ) / ukuran prosesstart_serversJumlah inti CPU x 4min_spare_serversJumlah inti CPU x 2max_spare_serversSama seperti 5Kita juga perlu mengatur _4, yang merupakan jumlah detik setelah proses menganggur akan dimatikanKatakanlah server kita memiliki dua CPU, masing-masing dengan empat inti, dan RAM 8 GB. Jika kita berasumsi bahwa Linux dan daemon terkait menggunakan sekitar 2GB (gunakan 7 untuk mendapatkan nilai yang lebih spesifik), itu menyisakan sekitar 6192MBSekarang, berapa banyak memori yang digunakan setiap proses? . py. Setelah menjalankannya, menggunakan _8, Anda akan mendapatkan keluaran yang mirip dengan berikut ini
Kolom pertama adalah memori pribadi. Kolom kedua adalah memori bersama. Kolom ketiga adalah total RAM yang digunakan. Kolom keempat adalah nama proses Dari gambar di atas, Anda dapat melihat bahwa ukuran prosesnya adalah 62. 2MiB. Jadi, memasukkan semua informasi itu ke dalam formula kami, kami sampai pada yang berikut
Berdasarkan itu, kami sampai pada nilai pengaturan berikut SettingValuemax_children100start_servers32min_spare_servers16max_spare_servers32Kami akan membiarkan _4 ke default 0. Dengan asumsi bahwa kami senang dengan pengaturan ini, maka kami akan mengonfigurasinya sebagai berikut
Anda juga dapat menggunakan alat pemantau memori secara teratur untuk memantau berapa banyak memori yang digunakan aplikasi Anda. Ada sejumlah opsi yang tersedia untuk PHP, termasuk php-memprof dan Tideways sesuai permintaanondemand memiliki proses garpu PHP-FPM saat permintaan diterima. Untuk mengkonfigurasi PHP-FPM untuk menggunakannya, kita perlu mengatur 1 ke 2, dan memberikan nilai untuk
_3 menetapkan jumlah permintaan yang harus dijalankan oleh setiap proses anak sebelum respawning. Dokumentasi menunjukkan bahwa pengaturan ini berguna untuk mengatasi kebocoran memoriDengan asumsi bahwa kami mengambil pengaturan yang sama seperti untuk 2, kami akan mengonfigurasinya sebagai berikut
Konfigurasi Mana Yang Tepat Untuk Anda?Sejujurnya? . “tergantung”, karena selalu bergantung pada jenis aplikasi yang Anda jalankan. Namun, berikut adalah beberapa saran tentang konfigurasi mana yang harus dipilih Situs Lalu Lintas RendahJika Anda memiliki situs dengan lalu lintas rendah, seperti hosting panel kontrol backend, seperti cPanel, gunakan ondemand. Memori akan disimpan karena proses anak hanya akan muncul saat dibutuhkan dan dimatikan saat tidak diperlukan lagi. Karena ini adalah backend, pengguna dapat menunggu satu atau dua saat lebih lama sementara utas muncul untuk menangani permintaan mereka Situs Lalu Lintas TinggiJika Anda memiliki situs web dengan lalu lintas tinggi, gunakan statis dan sesuaikan pengaturan berdasarkan kebutuhan Anda dari waktu ke waktu dan sumber daya perangkat keras yang tersedia. Mungkin tampak berlebihan untuk memiliki sejumlah besar proses anak yang selalu siap menerima permintaan Namun, situs dengan lalu lintas tinggi perlu merespons secepat mungkin. Oleh karena itu, sangat penting untuk menggunakan statis sehingga cukup banyak proses anak yang siap melakukannya Dengan menggunakan ondemand, proses anak kemungkinan akan menghabiskan terlalu banyak memori yang dihasilkan dan dimatikan, dan penundaan startup akan berdampak pada kinerja Menggunakan dinamis sepertinya tidak akan seburuk itu, tergantung pada konfigurasinya. Namun, Anda mungkin berakhir dengan konfigurasi yang mencerminkan statis secara efektif Menggunakan Beberapa Pool untuk Frontend/BackendSekarang untuk satu rekomendasi terakhir. melayani frontend dan backend situs web Anda menggunakan kumpulan yang berbeda. Katakanlah Anda memiliki situs e-niaga, mungkin diberdayakan oleh Magento. Anda dapat melihat aplikasi ini terdiri dari dua bagian
Jika dilihat dengan cara ini, masuk akal untuk memiliki satu kumpulan yang melayani frontend dan kumpulan lainnya yang melayani backend dan mengonfigurasi masing-masing dengan tepat Untuk apa nilainya, Anda dapat membagi aplikasi apa pun menjadi beberapa bagian menggunakan strategi ini, jika masuk akal untuk melakukannya. Inilah cara melakukannya Di
Ini menciptakan dua kumpulan, satu untuk frontend, dan satu untuk backend. Keduanya memiliki pengguna dan grup yang sama, tetapi memiliki konfigurasi manajer proses yang berbeda dan terhubung melalui soket yang berbeda Kumpulan frontend menggunakan konfigurasi statis dengan sejumlah kecil proses anak maksimum. Kumpulan backend menggunakan konfigurasi ondemand, juga dengan sejumlah kecil konfigurasi. Angka-angka ini sewenang-wenang, karena untuk keperluan contoh Dengan itu disimpan, untuk file vhost NGINX Anda, gunakan konfigurasi berikut
Ini membuat konfigurasi host virtual yang mengirimkan permintaan ke kumpulan frontend atau backend, berdasarkan lokasi yang diminta. Permintaan apa pun ke 6 dikirim ke kumpulan backend, dan semua permintaan lainnya dialihkan ke frontendKesimpulannyaItu adalah pengantar cepat untuk menyetel PHP-FPM untuk kinerja yang lebih baik. Kami telah melihat tiga konfigurasi manajer proses yang berbeda, pengaturan terkaitnya, dan membahas kapan setiap konfigurasi masuk akal. Kami kemudian menyelesaikannya dengan melihat kumpulan pekerja Apakah PHPSetiap proses PHP-FPM menggunakan satu inti CPU . PHP sangat diuntungkan dari kinerja single-thread CPU. Sebelum kita membahasnya, mari kita lihat bagaimana PHP menggunakan CPU server web Anda. Seperti yang mungkin sudah Anda ketahui, PHP tidak dirancang untuk multithreading.
Apakah PHP multithreaded atau single threaded?PHP, seperti kebanyakan bahasa sisi server, menggunakan multi-utas , memblokir I/O untuk menjalankan banyak tugas secara paralel.
Mengapa PHP adalah utas tunggal?Sifat utas tunggal PHP berarti bahwa PHP tidak memiliki dukungan bawaan untuk membuat utas baru selama eksekusi skrip . Namun, ini tidak berarti bahwa Anda tidak dapat menjalankan dua skrip yang sama secara bersamaan. Dalam penyiapan yang paling umum, situs web Anda dilayani oleh Apache HTTPD.
Apakah ada multithreading di PHP?Aplikasi PHP, tidak diragukan lagi bekerja secara efektif dengan kemampuan multithreading . Multithreading adalah sesuatu yang mirip dengan multitasking, tetapi memungkinkan untuk memproses banyak pekerjaan sekaligus, bukan pada banyak proses. |