Bagaimana saya tahu jika apache sedang berjalan (atau dikonfigurasi untuk dijalankan) sebagai prefork atau pekerja?
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.
andreas@halleck:~$ apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
andreas@halleck:~$
Di sini kita menemukan modul worker.c, maka saya menjalankan MPM pekerja.
apache2ctl -Muntuk 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 -Vmenunjukkan 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/httpdPada CentOS / RedHat)HTTPD=/usr/sbin/httpd.workerMPM mana yang benar-benar berjalan dapat ditunjukkan menggunakan proses ini:
curl localhost/server-infohttpd -Vlagi - 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 -Vuntuk mengetahui apakah Apache menjalankan prefork atau pekerja. Mereka semua salah. Coba prosedur di atas untuk melihat sendiri.
Di Ubuntu 14.04
a2query -M
Menceritakan event, prefork,worker
Anda dapat mengubahnya dengan menambahkan tautan simbolik mpm_<chosen>dari dari mods-availableke mods-enableddalam /etc/apache2.
Hanya satu yang diizinkan dalam satu waktu.
eventMPM adalah, menurut situs Apache, "varian dari MPM pekerja dengan tujuan mengkonsumsi benang hanya untuk koneksi dengan proses aktif".
Pada RedHat dan turunan, hanya peluncuran topatau ps auxdan melihat nama proses httpd:
httpd berarti Apache berjalan sebagai preforkhttpd.worker berarti dijalankan sebagai pekerjaPada RHEL / Fedora / etc, jalankan httpd -V. Anda akan mendapatkan beberapa output yang meliputi:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Di sini 'Server MPM' adalah 'Prefork', jadi server saya menjalankan MPM prefork.
Chris Johnson benar. Pergi ke httpd.conf => tambahkan baris ini:
<Location /server-info>
SetHandler server-info
</Location>
Restart apache: /etc/init.d/httpd restart. Kemudian akses localhost / server-info oleh browser Anda dan lihat bagian Nama MPM .
Berikut adalah metode lain yang saya harapkan dapat diandalkan dalam menentukan MPM mana yang digunakan. Tambahkan yang berikut ke Anda httpd.conf:
<IfModule prefork.c>
Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
Header append X-MPM worker
</IfModule>
Kemudian periksa tajuk menggunakan curl -I localhost | grep X-MPM.
pada centos (atau rhel) Anda dapat menjalankan perintah ini:
ps -ef | grep httpd
jika Anda melihat /usr/sbin/httpd.workersedang berlari, maka itu menggunakan MPM pekerja. jika Anda melihat /usr/sbin/httpdberjalan, maka itu menggunakan prefork
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:
links -dump http://localhost/server-info/?server | grep "MPM Name"