Melihat file konfigurasi Apache, saya melihat MPM Prefork dan Pekerja ditentukan. Apa bedanya dan mana yang digunakan Apache?
113
Prefork dan worker adalah dua jenis MPM apache. Keduanya memiliki kelebihan dan kekurangan.
Secara default, mpm adalah prefork yang aman untuk thread.
MPM prefork menggunakan beberapa proses anak dengan masing-masing satu utas dan setiap proses menangani satu koneksi dalam satu waktu.
MPM pekerja menggunakan beberapa proses anak dengan masing-masing banyak utas. Setiap utas menangani satu koneksi dalam satu waktu.
Untuk lebih jelasnya Anda dapat mengunjungi https://httpd.apache.org/docs/2.4/mpm.html dan https://httpd.apache.org/docs/2.4/mod/prefork.html
Multi-Processing Modules (MPMs) Apache bertanggung jawab untuk mengikat port jaringan pada mesin, menerima permintaan, dan mengirim turunan untuk menangani permintaan ( http://httpd.apache.org/docs/2.2/mpm.html ).
Mereka seperti modul Apache lainnya, kecuali bahwa hanya satu dan hanya satu MPM yang harus dimuat ke server setiap saat . MPM dipilih selama konfigurasi dan dikompilasi ke dalam server dengan menggunakan argumen
--with-mpm=NAME
dengan skrip konfigurasi di manaNAME
nama MPM yang diinginkan.Apache akan menggunakan MPM default untuk setiap sistem operasi kecuali sistem operasi yang berbeda dipilih pada waktu kompilasi (misalnya pada Windows
mpm_winnt
digunakan secara default). Berikut daftar sistem operasi dan MPM defaultnya:beos
mpm_netware
mpmt_os2
prefork
( pembaruan untuk versi Apache ≥ 2,4 :prefork
,worker
, atauevent
, tergantung pada kemampuan platform)mpm_winnt
Untuk memeriksa modul apa saja yang dikompilasi ke dalam server gunakan opsi baris perintah
-l
( berikut dokumentasinya). Misalnya pada instalasi Windows Anda mungkin mendapatkan sesuatu seperti:Mulai versi 2.2, berikut adalah daftar fitur inti dan modul MPM yang tersedia :
core
- Fitur Core Apache HTTP Server yang selalu tersediampm_common
- Kumpulan arahan yang diimplementasikan oleh lebih dari satu modul multi-pemrosesan (MPM)beos
- Modul Multi-Pemrosesan ini dioptimalkan untuk BeOS.event
- Varian eksperimental dari MPM pekerja standarmpm_netware
Modul Multi-Pemrosesan menerapkan server web berulir eksklusif yang dioptimalkan untuk Novell NetWarempmt_os2
Hybrid multi-proses, MPM multi-threaded untuk OS / 2prefork
Menerapkan server web non-threaded, pra-forkingmpm_winnt
- Modul Multi-Pemrosesan ini dioptimalkan untuk Windows NT.worker
- Multi-Processing Module menerapkan web server multi-threaded multi-proses hybridSekarang, untuk perbedaan antara
prefork
danworker
.The
prefork
MPMThe
worker
MPM alat hibrida multi-proses multi-berulir server dan memberikan kinerja yang lebih baik, karena itu harus disukai kecuali ada yang menggunakan modul lain yang mengandung non-benang-aman perpustakaan (lihat juga diskusi ini atau ini pada Serverfault).sumber
Lihat ini untuk detail lebih lanjut. Ini mengacu pada bagaimana Apache menangani banyak permintaan. Preforking, yang merupakan default, memulai sejumlah proses Apache (2 secara default di sini, meskipun saya yakin seseorang dapat mengkonfigurasi ini melalui httpd.conf). MPM pekerja akan memulai utas baru per permintaan, yang menurut saya, lebih hemat memori. Secara historis, Apache telah menggunakan prefork, jadi ini adalah model yang teruji lebih baik. Threading hanya ditambahkan di 2.0.
sumber
Untuk CentOS 6.x dan 7.x (termasuk Amazon Linux) gunakan:
Ini akan menunjukkan kepada Anda MPM mana yang dikonfigurasi. Baik prefork, worker, atau event. Prefork adalah model threadsafe sebelumnya. Worker multi-threaded, dan event mendukung php-mpm yang seharusnya menjadi sistem yang lebih baik untuk menangani thread dan permintaan.
Namun, hasil Anda mungkin berbeda-beda, berdasarkan konfigurasi. Saya telah melihat banyak ketidakstabilan di php-mpm dan tidak ada peningkatan kecepatan. Laba-laba yang agresif dapat menghabiskan proses turunan secara maksimal dalam php-mpm dengan cukup mudah.
Pengaturan prefork, worker, atau event diatur di sudo nano /etc/httpd/conf.modules.d/00-mpm.conf (untuk CentOS 6.x / 7.x / Apache 2.4).
sumber
Anda dapat mengetahui apakah Apache menggunakan preform atau worker dengan mengeluarkan perintah berikut
Dalam keluaran yang dihasilkan, cari menyebutkan prefork.c atau worker.c
sumber
apachectl -V
dan lihat output di sebelahServer MPM
. Juga dapat memeriksaps aux
dan mencari salah satuhttpd
atauhttpd.worker
.apache2ctl -l
tidak berhasil; harus menggunakanapachectl -l
.httpd -V
akan memberikan sesuatu seperti:Server MPM: worker
Sangat mudah untuk beralih antara prefork atau worker mpm di Apache 2.4 di RHEL7
Periksa jenis MPM dengan menjalankan
Sekarang untuk mengubah MPM, edit file berikut dan hapus komentar MPM diperlukan
sumber
Apache memiliki 2 jenis MPM (Multi-Processing Modules) yang ditentukan:
1: Prefork 2: Pekerja
Secara default, Apacke dikonfigurasi dalam mode preforked yaitu web server pra-forking non-threaded. Itu berarti bahwa setiap proses turunan Apache berisi satu utas dan menangani satu permintaan dalam satu waktu. Karena itu, ia menghabiskan lebih banyak sumber daya.
Apache juga memiliki MPM pekerja yang mengubah Apache menjadi server web multi-proses dan multi-utas. MPM pekerja menggunakan beberapa proses anak dengan masing-masing banyak utas.
sumber