উত্তর:
প্রেফার্ক এবং ওয়ার্কার হ'ল এমপিএম অ্যাপাচি দুই প্রকারের। উভয়েরই তাদের যোগ্যতা এবং শত্রুতা রয়েছে।
ডিফল্টরূপে এমপিএম প্রিফের্ক যা থ্রেড নিরাপদ।
প্রেফের্ক এমপিএম প্রতিটি থ্রেড সহ একাধিক শিশু প্রক্রিয়া ব্যবহার করে এবং প্রতিটি প্রক্রিয়া এক সাথে একটি সংযোগ পরিচালনা করে।
কর্মী এমপিএম প্রতিটি থ্রেড সহ একাধিক শিশু প্রক্রিয়া ব্যবহার করে। প্রতিটি থ্রেড একসাথে একটি সংযোগ পরিচালনা করে।
আরও তথ্যের জন্য আপনি https://httpd.apache.org/docs/2.4/mpm.html এবং https://httpd.apache.org/docs/2.4/mod/prefork.html দেখতে পারেন
অ্যাপাচের মাল্টি-প্রসেসিং মডিউলগুলি (এমপিএম) মেশিনে নেটওয়ার্ক পোর্টগুলিতে আবদ্ধ হওয়ার জন্য, অনুরোধগুলি গ্রহণ করার জন্য, এবং অনুরোধগুলি পরিচালনা করার জন্য বাচ্চাদের প্রেরণের জন্য ( http://httpd.apache.org/docs/2.2/mpm.html ) দায়বদ্ধ ।
এগুলি অন্য যে কোনও অ্যাপাচি মডিউলের মতো, কেবলমাত্র একজন এবং কেবলমাত্র একটি এমপিএম যে কোনও সময় সার্ভারে লোড করতে হবে । এমপিএমগুলি কনফিগারেশনের সময় চয়ন করা হয় এবং কনফিগার স্ক্রিপ্টের সাথে আর্গুমেন্ট ব্যবহার করে সার্ভারে সংকলিত--with-mpm=NAME
যেখানে NAME
পছন্দসই এমপিএমের নাম।
সংকলন-সময়ে আলাদা আলাদা চয়ন করা না হলে অ্যাপাচি প্রতিটি অপারেটিং সিস্টেমের জন্য একটি ডিফল্ট এমপিএম ব্যবহার করবে (উদাহরণস্বরূপ উইন্ডোজে mpm_winnt
ডিফল্টরূপে ব্যবহৃত হয়)। অপারেটিং সিস্টেম এবং তাদের ডিফল্ট এমপিএমগুলির তালিকা এখানে রয়েছে:
beos
mpm_netware
mpmt_os2
prefork
( আপডেট ≥ এ্যাপাচি সংস্করণ জন্য 2.4 : prefork
, worker
, অথবা event
, প্ল্যাটফর্ম ক্ষমতা উপর নির্ভর করে)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
।
অ্যাপাচি ১.৩ এর অনুরূপ পদ্ধতিতে অনুরোধগুলি পরিচালনা করে এমন একটি অ-থ্রেডযুক্ত, প্রাক-ফোর্কিং ওয়েব সার্ভার প্রয়োগ করে। থ্রেড-নিরাপদ লাইব্রেরিগুলির সাথে সামঞ্জস্যের জন্য থ্রেডিং এড়ানো দরকার এমন সাইটের জন্য এটি উপযুক্ত। এটি প্রতিটি অনুরোধকে বিচ্ছিন্ন করার জন্য সেরা এমপিএমও যাতে একক অনুরোধে সমস্যা অন্য কোনওটিকে প্রভাবিত না করে।
worker
MPM কার্যকরী একটি সংকর বহু-প্রক্রিয়া বহু-থ্রেডেড সার্ভার এবং ভাল পারফরম্যান্স দেয়, যদি না অন্য একজন মডিউল যা অ থ্রেড-নিরাপদ লাইব্রেরি (এছাড়াও দেখুন ধারণ ব্যবহার করছে অত: পর এটি পছন্দ করা উচিত এই আলোচনা বা এই Serverfault তে) খুলুন।
কটাক্ষপাত এই আরো বিস্তারিত জন্য। এটি অ্যাপাচি কীভাবে একাধিক অনুরোধ পরিচালনা করে তা বোঝায়। প্রিফার্কিং, যা ডিফল্ট, বেশ কয়েকটি অ্যাপাচি প্রক্রিয়া শুরু করে (2 এখানে ডিফল্টরূপে, যদিও আমি বিশ্বাস করি যে কেউ এটি httpd.conf এর মাধ্যমে কনফিগার করতে পারে)। কর্মী এমপিএম অনুরোধ অনুযায়ী একটি নতুন থ্রেড শুরু করবে, যা আমি অনুমান করি, এটি আরও মেমরির দক্ষ। .তিহাসিকভাবে, অ্যাপাচি প্রিফোর্ক ব্যবহার করেছে, সুতরাং এটি একটি আরও ভাল-পরীক্ষিত মডেল। থ্রেডিংটি কেবলমাত্র 2.0 তে যুক্ত হয়েছিল।
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
নিম্নলিখিত কমান্ড জারি করে আপাচি প্রিফর্ম বা কর্মী ব্যবহার করছে কিনা তা আপনি বলতে পারেন can
apache2ctl -l
ফলস্বরূপ আউটপুটে, প্রেফেরক.সি. বা ওয়ার্কার
apachectl -V
দেখুন এবং পাশের আউটপুটটি দেখুন Server MPM
। এছাড়াও পরীক্ষা করতে পারবেন ps aux
এবং জন্য পারেন দেখুন httpd
বা httpd.worker
।
apache2ctl -l
কাজ হয়নি; ব্যবহার করতে হবে apachectl -l
।
httpd -V
এরকম কিছু দেবে:Server MPM: worker
আরএইচইএল 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
অ্যাপাচে 2 প্রকারের এমপিএম (মাল্টি-প্রসেসিং মডিউল) সংজ্ঞায়িত করা হয়েছে:
1: Prefork 2: কর্মী
ডিফল্টরূপে, অ্যাপাককে প্রফোরক মোডে অর্থাৎ নন-থ্রেডেড প্রি-ফোর্কিং ওয়েব সার্ভারে কনফিগার করা হয়েছে। এর অর্থ হ'ল প্রতিটি অ্যাপাচি শিশু প্রক্রিয়াতে একটি একক থ্রেড থাকে এবং একসাথে একটি অনুরোধ পরিচালনা করে। যে কারণে এটি বেশি সংস্থান গ্রহণ করে।
অ্যাপাচে কর্মী এমপিএমও রয়েছে যা অ্যাপাচে একটি মাল্টি-প্রসেস, মাল্টি-থ্রেডেড ওয়েব সার্ভারে রূপান্তরিত করে। কর্মী এমপিএম প্রতিটি থ্রেড সহ একাধিক শিশু প্রক্রিয়া ব্যবহার করে।