[apache] अपाचे प्रीफोर बनाम वर्कर एमपीएम


Answers

अपाचे के मल्टी प्रोसेसिंग मॉड्यूल (एमपीएम) मशीन पर नेटवर्क बंदरगाहों को बाध्य करने, अनुरोध स्वीकार करने और अनुरोधों को संभालने के लिए बच्चों को प्रेषित करने के लिए ज़िम्मेदार हैं ( httpd.apache.org/docs/2.2/mpm.html )।

वे किसी अन्य अपाचे मॉड्यूल की तरह हैं, सिवाय इसके कि केवल एक और केवल एक एमपीएम सर्वर में किसी भी समय लोड किया जाना चाहिए । एमपीएम को कॉन्फ़िगरेशन के दौरान चुना जाता है और कॉन्फ़िगरेशन स्क्रिप्ट के साथ तर्क --with-mpm=NAME का उपयोग करके सर्वर में संकलित किया जाता है जहां NAME वांछित एमपीएम का नाम होता है।

अपाचे प्रत्येक ऑपरेटिंग सिस्टम के लिए एक डिफ़ॉल्ट एमपीएम का उपयोग करेगा जब तक कि संकलित समय पर एक अलग चयन नहीं किया जाता है (उदाहरण के लिए विंडोज mpm_winnt डिफ़ॉल्ट रूप से उपयोग किया जाता है)। ऑपरेटिंग सिस्टम और उनके डिफ़ॉल्ट एमपीएम की सूची यहां दी गई है:

यह जांचने के लिए कि सर्वर में कौन से मॉड्यूल संकलित किए गए हैं, कमांड लाइन विकल्प -l ( here प्रलेखन है) का उपयोग करें। उदाहरण के लिए विंडोज इंस्टॉलेशन पर आपको कुछ ऐसा मिल सकता है:

> httpd -l
Compiled in modules:
  core.c
  mod_win32.c
  mpm_winnt.c
  http_core.c
  mod_so.c

संस्करण 2.2 के अनुसार यह उपलब्ध मूल सुविधाओं और एमपीएम मॉड्यूल की सूची है :

  • core - कोर अपाचे HTTP सर्वर विशेषताएं जो हमेशा उपलब्ध होती हैं
  • mpm_common - एक से अधिक बहु-प्रोसेसिंग मॉड्यूल (एमपीएम) द्वारा लागू किए गए निर्देशों का संग्रह
  • beos - यह मल्टी प्रोसेसिंग मॉड्यूल बीओएस के लिए अनुकूलित है।
  • event - मानक कार्यकर्ता एमपीएम का एक प्रयोगात्मक संस्करण
  • mpm_netware मल्टी प्रोसेसिंग मॉड्यूल नोवेल नेटवेयर के लिए अनुकूलित एक विशेष रूप से थ्रेडेड वेब सर्वर को कार्यान्वित करता है
  • mpmt_os2 हाइब्रिड बहु-प्रक्रिया, ओएस / 2 के लिए बहु-थ्रेडेड एमपीएम
  • prefork एक गैर थ्रेडेड, पूर्व- prefork वेब सर्वर लागू करता है
  • mpm_winnt - यह मल्टी प्रोसेसिंग मॉड्यूल विंडोज एनटी के लिए अनुकूलित है।
  • worker - बहु-प्रसंस्करण मॉड्यूल एक संकर बहु-थ्रेडेड बहु-प्रक्रिया वेब सर्वर को कार्यान्वित करता है

अब, prefork और worker बीच अंतर के लिए।

prefork एमपीएम

एक गैर थ्रेडेड, प्री-फोर्किंग वेब सर्वर लागू करता है जो अपाचे 1.3 के समान तरीके से अनुरोधों को संभालता है। यह उन साइटों के लिए उपयुक्त है जिन्हें गैर थ्रेड-सुरक्षित पुस्तकालयों के साथ संगतता के लिए थ्रेडिंग से बचने की आवश्यकता है। यह प्रत्येक अनुरोध को अलग करने के लिए सबसे अच्छा एमपीएम भी है, ताकि एक अनुरोध के साथ कोई समस्या किसी अन्य को प्रभावित न करे।

worker एमपीएम एक संकर बहु-प्रक्रिया बहु-थ्रेडेड सर्वर लागू करता है और बेहतर प्रदर्शन देता है, इसलिए इसे तब तक प्राथमिकता दी जानी चाहिए जब तक कि कोई अन्य मॉड्यूल का उपयोग न करे जिसमें गैर-थ्रेड-सुरक्षित पुस्तकालय शामिल हों ( यह चर्चा या सर्वरफॉल्ट पर भी देखें)।

Question

अपाचे कॉन्फ़िगरेशन फ़ाइल को देखते हुए, मुझे प्रीफ़ोर और वर्कर एमपीएम परिभाषित किया गया है। अंतर क्या है और अपाचे का उपयोग कौन सा है?




RHEL7 पर Apache 2.4 में prefork या कार्यकर्ता mpm के बीच स्विच करना आसान है

निष्पादित करके एमपीएम प्रकार की जांच करें

sudo httpd -V

Server version: Apache/2.4.6 (Red Hat Enterprise Linux)
Server built:   Jul 26 2017 04:45:44
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    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="/run/httpd/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"

अब एमपीएम को निम्नलिखित फ़ाइल और असम्बद्धता आवश्यक एमपीएम संपादित करने के लिए बदलें

 /etc/httpd/conf.modules.d/00-mpm.conf 

# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
#LoadModule mpm_event_module modules/mod_mpm_event.so



CentOS 6.x और 7.x (अमेज़ॅन लिनक्स सहित) के लिए उपयोग करें:

sudo httpd -V

यह आपको दिखाएगा कि कौन से एमपीएम कॉन्फ़िगर किए गए हैं। या तो prefork, कार्यकर्ता, या घटना। Prefork पहले, थ्रेडसेफ मॉडल है। श्रमिक बहु थ्रेडेड है, और घटना php-mpm का समर्थन करती है जिसे धागे और अनुरोधों को संभालने के लिए एक बेहतर प्रणाली माना जाता है।

हालांकि, कॉन्फ़िगरेशन के आधार पर आपके परिणाम भिन्न हो सकते हैं। मैंने php-mpm में बहुत अस्थिरता देखी है और कोई गति सुधार नहीं है। एक आक्रामक मकड़ी PHP-mpm में अधिकतम बाल प्रक्रियाओं को आसानी से समाप्त कर सकता है।

Prefork, कार्यकर्ता, या घटना के लिए सेटिंग sudo nano /etc/httpd/conf.modules.d/00-mpm.conf (CentOS 6.x / 7.x / अपाचे 2.4 के लिए) में सेट है।

# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#LoadModule mpm_event_module modules/mod_mpm_event.so



Links



Tags

apache