অ্যাপাচি প্রেফের্ক বনাম কর্মী এমপিএম


113

অ্যাপাচি কনফিগারেশন ফাইলটির দিকে তাকিয়ে আমি প্রফোরক এবং ওয়ার্কার এমপিএম সংজ্ঞায়িত দেখতে পেলাম। কী পার্থক্য এবং কোনটি অ্যাপাচি ব্যবহার করছে?

উত্তর:


120

প্রেফার্ক এবং ওয়ার্কার হ'ল এমপিএম অ্যাপাচি দুই প্রকারের। উভয়েরই তাদের যোগ্যতা এবং শত্রুতা রয়েছে।

ডিফল্টরূপে এমপিএম প্রিফের্ক যা থ্রেড নিরাপদ।

প্রেফের্ক এমপিএম প্রতিটি থ্রেড সহ একাধিক শিশু প্রক্রিয়া ব্যবহার করে এবং প্রতিটি প্রক্রিয়া এক সাথে একটি সংযোগ পরিচালনা করে।

কর্মী এমপিএম প্রতিটি থ্রেড সহ একাধিক শিশু প্রক্রিয়া ব্যবহার করে। প্রতিটি থ্রেড একসাথে একটি সংযোগ পরিচালনা করে।

আরও তথ্যের জন্য আপনি https://httpd.apache.org/docs/2.4/mpm.html এবং https://httpd.apache.org/docs/2.4/mod/prefork.html দেখতে পারেন


11
আরও দেখুন "কোন অ্যাপাচি এমপিএম ব্যবহার করব তা আমি কীভাবে নির্বাচন করব?" serverfault.com/a/383634
নাজারি

@ অরবিন্দ // প্রতিটি থ্রেড একসাথে একটি সংযোগ পরিচালনা করে // এখানে সংযোগটির অর্থ একক ব্যবহারকারী বা একক অনুরোধ?
প্লিজ

21

অ্যাপাচের মাল্টি-প্রসেসিং মডিউলগুলি (এমপিএম) মেশিনে নেটওয়ার্ক পোর্টগুলিতে আবদ্ধ হওয়ার জন্য, অনুরোধগুলি গ্রহণ করার জন্য, এবং অনুরোধগুলি পরিচালনা করার জন্য বাচ্চাদের প্রেরণের জন্য ( http://httpd.apache.org/docs/2.2/mpm.html ) দায়বদ্ধ ।

এগুলি অন্য যে কোনও অ্যাপাচি মডিউলের মতো, কেবলমাত্র একজন এবং কেবলমাত্র একটি এমপিএম যে কোনও সময় সার্ভারে লোড করতে হবে । এমপিএমগুলি কনফিগারেশনের সময় চয়ন করা হয় এবং কনফিগার স্ক্রিপ্টের সাথে আর্গুমেন্ট ব্যবহার করে সার্ভারে সংকলিত--with-mpm=NAME যেখানে NAMEপছন্দসই এমপিএমের নাম।

সংকলন-সময়ে আলাদা আলাদা চয়ন করা না হলে অ্যাপাচি প্রতিটি অপারেটিং সিস্টেমের জন্য একটি ডিফল্ট এমপিএম ব্যবহার করবে (উদাহরণস্বরূপ উইন্ডোজে mpm_winntডিফল্টরূপে ব্যবহৃত হয়)। অপারেটিং সিস্টেম এবং তাদের ডিফল্ট এমপিএমগুলির তালিকা এখানে রয়েছে:

সার্ভারে কোন মডিউলগুলি সংকলিত হয়েছে তা পরীক্ষা করতে কমান্ড-লাইন বিকল্পটি ব্যবহার করুন -l( এখানে ডকুমেন্টেশন রয়েছে)। উদাহরণস্বরূপ উইন্ডোজ ইনস্টলেশনতে আপনি কিছু পেতে পারেন:

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

সংস্করণ ২.২ হিসাবে এটি উপলব্ধ মূল বৈশিষ্ট্য এবং এমপিএম মডিউলগুলির তালিকা :

  • core - কোর অ্যাপাচি এইচটিটিপি সার্ভার বৈশিষ্ট্য যা সর্বদা উপলব্ধ
  • mpm_common - একাধিক মাল্টি-প্রসেসিং মডিউল (এমপিএম) দ্বারা প্রয়োগ করা নির্দেশাবলীর একটি সংগ্রহ
  • beos - এই মাল্টি-প্রসেসিং মডিউলটি বিওএস-এর জন্য অনুকূলিত।
  • event - মানক কর্মী এমপিএমের একটি পরীক্ষামূলক বৈকল্পিক
  • mpm_netware মাল্টি-প্রসেসিং মডিউলটি একচেটিয়াভাবে থ্রেডযুক্ত ওয়েব সার্ভার বাস্তবায়ন করে যা নভেল নেটওয়ারের জন্য অনুকূলিত
  • mpmt_os2 হাইব্রিড মাল্টি-প্রসেস, ওএস / 2 এর জন্য মাল্টি-থ্রেডেড এমপিএম
  • prefork একটি অ-থ্রেডযুক্ত, প্রাক-ফোর্কিং ওয়েব সার্ভার কার্যকর করে
  • mpm_winnt - এই মাল্টি-প্রসেসিং মডিউলটি উইন্ডোজ এনটি-র জন্য অনুকূলিত হয়েছে।
  • worker - হাইব্রিড মাল্টি-থ্রেডড মাল্টি-প্রসেস ওয়েব সার্ভার বাস্তবায়ন করে মাল্টি-প্রসেসিং মডিউল

এখন, এর মধ্যে পার্থক্য করতে preforkএবং worker

preforkMPM

অ্যাপাচি ১.৩ এর অনুরূপ পদ্ধতিতে অনুরোধগুলি পরিচালনা করে এমন একটি অ-থ্রেডযুক্ত, প্রাক-ফোর্কিং ওয়েব সার্ভার প্রয়োগ করে। থ্রেড-নিরাপদ লাইব্রেরিগুলির সাথে সামঞ্জস্যের জন্য থ্রেডিং এড়ানো দরকার এমন সাইটের জন্য এটি উপযুক্ত। এটি প্রতিটি অনুরোধকে বিচ্ছিন্ন করার জন্য সেরা এমপিএমও যাতে একক অনুরোধে সমস্যা অন্য কোনওটিকে প্রভাবিত না করে।

workerMPM কার্যকরী একটি সংকর বহু-প্রক্রিয়া বহু-থ্রেডেড সার্ভার এবং ভাল পারফরম্যান্স দেয়, যদি না অন্য একজন মডিউল যা অ থ্রেড-নিরাপদ লাইব্রেরি (এছাড়াও দেখুন ধারণ ব্যবহার করছে অত: পর এটি পছন্দ করা উচিত এই আলোচনা বা এই Serverfault তে) খুলুন।


1
অ্যাপাচি ২.৪..7 এর উবুন্টু-বিশ্বাসযোগ্য -৪৪ এর একটি ডিফল্ট ইনস্টলেশন ইভেন্ট এমপিএম ব্যবহার করছে
ফেডেরিকো

9

কটাক্ষপাত এই আরো বিস্তারিত জন্য। এটি অ্যাপাচি কীভাবে একাধিক অনুরোধ পরিচালনা করে তা বোঝায়। প্রিফার্কিং, যা ডিফল্ট, বেশ কয়েকটি অ্যাপাচি প্রক্রিয়া শুরু করে (2 এখানে ডিফল্টরূপে, যদিও আমি বিশ্বাস করি যে কেউ এটি httpd.conf এর মাধ্যমে কনফিগার করতে পারে)। কর্মী এমপিএম অনুরোধ অনুযায়ী একটি নতুন থ্রেড শুরু করবে, যা আমি অনুমান করি, এটি আরও মেমরির দক্ষ। .তিহাসিকভাবে, অ্যাপাচি প্রিফোর্ক ব্যবহার করেছে, সুতরাং এটি একটি আরও ভাল-পরীক্ষিত মডেল। থ্রেডিংটি কেবলমাত্র 2.0 তে যুক্ত হয়েছিল।


3
ইভেন্ট এমপিএম সম্পর্কে কী?
ভিন্স ক্রোনলিন

6

CentOS 6.x এবং 7.x এর জন্য (অ্যামাজন লিনাক্স সহ) ব্যবহার করুন:

sudo httpd -V

এটি আপনাকে দেখায় যে কোন এমপিএম কনফিগার করা আছে। হয় প্রেফার্ক, কর্মী বা ইভেন্ট। প্রেফের্ক হ'ল পূর্ববর্তী, থ্রেডসেফ মডেল। কর্মী বহু-থ্রেডযুক্ত, এবং ইভেন্ট পিএইচপি-এমপিএম সমর্থন করে যা থ্রেড এবং অনুরোধগুলি পরিচালনা করার জন্য আরও ভাল সিস্টেম বলে মনে করা হয়।

তবে কনফিগারেশনের ভিত্তিতে আপনার ফলাফলগুলি পৃথক হতে পারে। আমি পিএইচপি-এমপিএম-তে প্রচুর অস্থিরতা দেখেছি এবং গতির কোনও উন্নতি হয়নি। আক্রমণাত্মক মাকড়সা পিএইচপি-এমপিএম-এ সর্বাধিক শিশু প্রক্রিয়াগুলি খুব সহজেই নিঃশেষ করতে পারে।

প্রেফার্ক, কর্মী বা ইভেন্টের জন্য সেটিংটি sudo Nano /etc/httpd/conf.modules.d/00-mpm.conf (CentOS 6.x / 7.x / Apache 2.4 এর জন্য) সেট করা আছে in

# 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

3

নিম্নলিখিত কমান্ড জারি করে আপাচি প্রিফর্ম বা কর্মী ব্যবহার করছে কিনা তা আপনি বলতে পারেন can

apache2ctl -l

ফলস্বরূপ আউটপুটে, প্রেফেরক.সি. বা ওয়ার্কার


8
অ্যাপাচি উভয় এমপিএম মডিউল দিয়ে সংকলন করা যায় তাই এটি সর্বদা নির্ভরযোগ্য নয়। যদি এটি দুটি এমপিএম মডিউল তালিকাভুক্ত করে চেষ্টা করে apachectl -Vদেখুন এবং পাশের আউটপুটটি দেখুন Server MPM। এছাড়াও পরীক্ষা করতে পারবেন ps auxএবং জন্য পারেন দেখুন httpdবা httpd.worker
প্রতিচ্ছবি

2
আমার ক্ষেত্রে apache2ctl -lকাজ হয়নি; ব্যবহার করতে হবে apachectl -l
ভ্যাকিল্যান্ডো

2
এগুলির কোনওটিই আমার জন্য তালিকাভুক্ত নয়, তবে অ্যাপাচি সূক্ষ্মভাবে কাজ করে, অ্যাপাচি / ২.৪..7 (উবুন্টু)
কারাতেডোগ

2
সেন্টোস x.x এ যা অ্যাপাচি ২.৪..6 চলছে, httpd -Vএরকম কিছু দেবে:Server MPM: worker
রানামোক

2

আরএইচইএল 7 তে অ্যাপাচি ২.৪-তে প্রেফরেক বা কর্মী এমপিএমের মধ্যে স্যুইচ করা সহজ

এক্সিকিউট করে এমপিএম টাইপ পরীক্ষা করুন

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"

এখন MPM সম্পাদনা নিম্নলিখিত ফাইল এবং uncomment প্রয়োজনীয় MPM পরিবর্তন করতে

 /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

কেন আমি যখন এমএমপিএম_কর্মী বা এমপিএম_উইভেন্ট ব্যবহার করার চেষ্টা করেছি তখন এটি আমার পৃষ্ঠায় কাজ করে না
লেও

0

অ্যাপাচে 2 প্রকারের এমপিএম (মাল্টি-প্রসেসিং মডিউল) সংজ্ঞায়িত করা হয়েছে:

1: Prefork 2: কর্মী

ডিফল্টরূপে, অ্যাপাককে প্রফোরক মোডে অর্থাৎ নন-থ্রেডেড প্রি-ফোর্কিং ওয়েব সার্ভারে কনফিগার করা হয়েছে। এর অর্থ হ'ল প্রতিটি অ্যাপাচি শিশু প্রক্রিয়াতে একটি একক থ্রেড থাকে এবং একসাথে একটি অনুরোধ পরিচালনা করে। যে কারণে এটি বেশি সংস্থান গ্রহণ করে।

অ্যাপাচে কর্মী এমপিএমও রয়েছে যা অ্যাপাচে একটি মাল্টি-প্রসেস, মাল্টি-থ্রেডেড ওয়েব সার্ভারে রূপান্তরিত করে। কর্মী এমপিএম প্রতিটি থ্রেড সহ একাধিক শিশু প্রক্রিয়া ব্যবহার করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.