Hướng dẫn xác định cơ chế MPM mà dịch vụ Apache đang sử dụng
MPM (Multi processing module) là một cơ chế hoạt động của Web Server Apache, cơ chế này sẽ quyết định cách thức tiếp nhận và xử lý các kết nối request từ người dùng. Apache hỗ trợ 3 cơ chế MPM tới thời điểm hiện tại tuỳ theo nhu cầu sử dụng. Bài viết này không đi sâu vào phân tích các loại MPM mà nội dung chủ yếu là note về cách thức xác định MPM mà Web Server Apache đang sử dụng.
Lưu ý :
– Có 3 cơ chế MPM mà Apache hỗ trợ : event, prefork và worker.
– MPM không phải là module, nó được compile với source code khi cài đặt.
– Apache chỉ có thể chạy 1 MPM vào 1 thời điểm.
Cách xác định cơ chế MPM – Apache
– Chúng ta sử dụng option “-V” đối với chương trình binary apache để liệt kê một số thông tin toàn cục. Trong lệnh sau mình sử dụng lệnh “grep” để lọc luôn dòng thông tin mình quan tâm.
Ubuntu/Debian
# apache2 -V Server MPM: worker
CentOS/RHEL
# httpd -V | grep MPM Server MPM: event
# httpd -V | grep MPM Server MPM: prefork
– Lệnh “-V” sẽ có output đầy đủ như sau :
Server version: Apache/2.4.12 (Unix) Server built: Apr 6 2016 21:17:56 Server's Module Magic Number: 20120210:41 Server loaded: APR 1.5.1, APR-UTIL 1.5.4 Compiled using: APR 1.5.1, APR-UTIL 1.5.4 Architecture: 64-bit Server MPM: event threaded: yes (fixed thread count) forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/httpd" -D SUEXEC_BIN="/usr/sbin/suexec" -D DEFAULT_PIDLOG="/var/logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf"
Vấn đề xác định MPM của Apache đang chạy đơn giản vậy đấy.