Bagaimana saya tahu jika apache sedang berjalan (atau dikonfigurasi untuk dijalankan) sebagai prefork atau pekerja?
40
Bagaimana saya tahu jika apache sedang berjalan (atau dikonfigurasi untuk dijalankan) sebagai prefork atau pekerja?
Jawaban:
MPM dikonfigurasi pada waktu kompilasi. Salah satu cara untuk mengetahuinya adalah dengan membuat daftar modul yang dikompilasi. Daftar itu akan mencakup MPM yang dipilih. Daftar dapat diselesaikan menjalankan biner apache, dengan flag -l.
Di sini kita menemukan modul worker.c, maka saya menjalankan MPM pekerja.
sumber
apache2ctl -M
untuk membuat daftar modul yang aktif.Jawaban yang diberikan oleh Series8217 dan Andol keduanya salah.
Pertanyaannya adalah, bagaimana cara mengetahui apakah Apache menjalankan prefork atau pekerja. Saran yang diberikan oleh jawaban lain hanya memberi tahu apa MPM default itu (berdasarkan modul yang dikompilasi), bukan jika standar itu atau pilihan lain sedang digunakan saat ini.
Jika
httpd -V
menunjukkan prefork, itu artinya prefork adalah MPM default yang dikompilasi. Itu dapat ditimpa dengan mengubah pengaturan file konfigurasi Apache, seperti yang ditunjukkan dalam proses ini:/etc/sysconfig/httpd
Pada CentOS / RedHat)HTTPD=/usr/sbin/httpd.worker
MPM mana yang benar-benar berjalan dapat ditunjukkan menggunakan proses ini:
curl localhost/server-info
httpd -V
lagi - masih akan menampilkan prefork, bukan pekerjaIntinya:
httpd -V
menunjukkan opsi default, bukan opsi mana yang benar-benar digunakanAda jawaban di banyak situs web yang mengatakan, gunakan
httpd -V
untuk mengetahui apakah Apache menjalankan prefork atau pekerja. Mereka semua salah. Coba prosedur di atas untuk melihat sendiri.sumber
Di Ubuntu 14.04
Menceritakan
event
,prefork
,worker
Anda dapat mengubahnya dengan menambahkan tautan simbolik
mpm_<chosen>
dari darimods-available
kemods-enabled
dalam/etc/apache2
.Hanya satu yang diizinkan dalam satu waktu.
sumber
event
MPM adalah, menurut situs Apache, "varian dari MPM pekerja dengan tujuan mengkonsumsi benang hanya untuk koneksi dengan proses aktif".Pada RedHat dan turunan, hanya peluncuran
top
ataups aux
dan melihat nama proses httpd:httpd
berarti Apache berjalan sebagai preforkhttpd.worker
berarti dijalankan sebagai pekerjasumber
Pada RHEL / Fedora / etc, jalankan
httpd -V
. Anda akan mendapatkan beberapa output yang meliputi:Di sini 'Server MPM' adalah 'Prefork', jadi server saya menjalankan MPM prefork.
sumber
Chris Johnson benar. Pergi ke httpd.conf => tambahkan baris ini:
Restart apache: /etc/init.d/httpd restart. Kemudian akses localhost / server-info oleh browser Anda dan lihat bagian Nama MPM .
sumber
Berikut adalah metode lain yang saya harapkan dapat diandalkan dalam menentukan MPM mana yang digunakan. Tambahkan yang berikut ke Anda
httpd.conf
:Kemudian periksa tajuk menggunakan
curl -I localhost | grep X-MPM
.sumber
pada centos (atau rhel) Anda dapat menjalankan perintah ini:
jika Anda melihat
/usr/sbin/httpd.worker
sedang berlari, maka itu menggunakan MPM pekerja. jika Anda melihat/usr/sbin/httpd
berjalan, maka itu menggunakan preforksumber
Jawaban dari Chris Johnson benar.
Setelah mengaktifkan modul info, seperti yang didokumentasikan dalam Dokumentasi Apache ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ), liner yang satu ini akan memberi Anda MPM yang Anda gunakan:
sumber
Salah satu cara yang saya temukan di Debian seperti distro, adalah dengan menjalankan:
sumber