কোন অ্যাপাচি এমপিএম ব্যবহার করব তা আমি কীভাবে নির্বাচন করব?


261

সঠিক অ্যাপাচি httpd এমপিএম নির্বাচন করার বিষয়ে এটি একটি ক্যানোনিকাল প্রশ্ন

আপাচি - 'কর্মী', 'ইভেন্ট', 'প্রেফার্ক', ইত্যাদি দেওয়া বিভিন্ন এমপিএমগুলির মধ্যে আমি কিছুটা বিভ্রান্ত

তাদের মধ্যে প্রধান পার্থক্যগুলি কী কী, এবং প্রদত্ত মোতায়েনের জন্য কোনটি সবচেয়ে ভাল হবে তা আমি কীভাবে সিদ্ধান্ত নেব?


4
আপনি যদি mod_php সমর্থন করেন, তবে আপনি প্রিফার্ক করছেন।
জোরডাচি

6
@ জোরেদাছে:? তিনি কখনও পিএইচপি উল্লেখ করেনি, এবং এমনকি যদি, mod_php কেবল ইভেন্টটিকেই বাতিল করে দেয়। অথবা আপনি এখনও 8 বছর আগে আরএল দ্বারা তৈরি একটি মন্তব্য আটকে আছেন? গত থ্রেডেড Apache এর সাথে সম্পর্কিত পিএইচপি লগ বাগ 2005 সালে ছিল
symcbean

2
দুঃখিত - এটি বন্ধ করতে ভোট পেয়েছে - এখানে একটি প্রশ্নের উত্তর খুব বেশি বিস্তৃত।
সিমকিবিয়ান

1
@ সাইমকিবিয়ান রি: পিএইচপি এবং থ্রেডস - পিএইচপি-র মূলটি আজকাল থ্রেডসফেট রয়েছে তবে আপনি প্রচুর অন্যান্য স্টাফ পাবেন যা লোকেরা সংকলন করবে না। আমি গত বছরের মতোই দংশন করেছি, সুতরাং এটি "উত্পাদনের উপর নির্ভর করার আগে" পরীক্ষা (ব্যাপকভাবে) এখনও "পরিস্থিতি ...
voretaq7

আপনি যে ওএস ব্যবহার করছেন তার উপর নির্ভর করে আপনার কাছে স্ট্যান্ডার্ড ইনস্টল থাকা সমস্ত বিকল্পগুলি নাও থাকতে পারে।
জন গার্ডেনিয়ার্স

উত্তর:


415

এর একটি নম্বর আছে MPM মডিউল তিনটি প্রধান বেশী (মাল্টি প্রসেসিং মডিউল), কিন্তু দ্বারা পর্যন্ত সবচেয়ে বহুল ব্যবহৃত (অন্তত * স্নো প্ল্যাটফর্মের উপর): prefork, worker, এবং event। মূলত, তারা অ্যাপাচি ওয়েব সার্ভারের বিবর্তনকে উপস্থাপন করে এবং সেই দীর্ঘ সময়ের (সফ্টওয়্যার শর্তাবলী) ইতিহাসের সময়কালের কম্পিউটিং সীমাবদ্ধতার মধ্যে এইচটিটিপি অনুরোধগুলি পরিচালনা করার জন্য সার্ভারটি নির্মিত হয়েছে বিভিন্ন উপায়ে।


prefork

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

থ্রেড নিরাপদ নয় এমন মডিউলের প্রয়োজন না হলে সম্ভবত প্রেফার্ক ব্যবহার করা ভাল নয়।

যদি ব্যবহার করুন আপনি মডিউল যা বিরতি যখন থ্রেড ব্যবহার করা হয় মত, প্রয়োজন mod_php। তারপরেও, ফাস্টসিজিআই এবং php-fpm

যদি ব্যবহার করবেন না: আপনার মডিউলগুলি থ্রেডিংয়ে ভাঙ্গবে না।

worker

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

যদি ব্যবহার করুন: আপনি অ্যাপাচি ২.২, বা ২.৪ এ আছেন এবং আপনি প্রাথমিকভাবে এসএসএল চালাচ্ছেন।

যদি ব্যবহার করবেন না: সামঞ্জস্যের জন্য আপনার প্রেফার্ক না লাগলে আপনি সত্যই ভুল হতে পারবেন না।

তবে নোট করুন যে পদক্ষেপগুলি সংযোগগুলির সাথে সংযুক্ত রয়েছে এবং অনুরোধ নয় - এর অর্থ হ'ল চালিয়ে যাওয়া সংযোগটি সর্বদা থ্রেডটি বন্ধ না হওয়া পর্যন্ত ধরে রাখে (যা আপনার কনফিগারেশনের উপর নির্ভর করে দীর্ঘ সময় হতে পারে)। আমাদের কেন ..

event

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

ব্যতিক্রম এখানে এসএসএল সংযোগ সহ; সেক্ষেত্রে, এটি কর্মীর সাথে একইভাবে আচরণ করে (সংযোগ বন্ধ না হওয়া পর্যন্ত প্রদত্ত থ্রেডটিতে প্রদত্ত সংযোগটি gluing)।

যদি ব্যবহার করুন: আপনি অ্যাপাচি ২.৪ এ আছেন এবং থ্রেডগুলি পছন্দ করেন তবে নিষ্ক্রিয় সংযোগের জন্য থ্রেড থাকা আপনার পছন্দ নয়। থ্রেড সবাই পছন্দ করে!

যদি ব্যবহার করবেন না: আপনি অ্যাপাচি ২.৪-তে নেই, বা আপনার সামঞ্জস্যের জন্য প্রিফোরক প্রয়োজন।


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


3
-1: আইএমই, কর্মী কেবল 15% অঞ্চলে httpd পদচিহ্নের আকার হ্রাস করে (আইআরসি লিনাক্স আরএসএস-এ সিওডাব্লু রিপোর্ট করে যা প্রাক-কাঁটাচামচ দেখে মনে হয় যেন এটি তার চেয়ে অনেক বেশি স্মৃতি ব্যবহার করে)। একটি প্রক্রিয়া এবং একটি এনপিটিএল থ্রেডের জন্য কার্নেল পায়ের ছাপের মধ্যে নগণ্য পার্থক্য রয়েছে। এটি পৃথিবী-বিভাজন থেকে অনেক দূরে। আমি বুঝতে পারি না আপনি কেন মনে করেন যে কোনও থ্রেডের জন্য অপেক্ষা করা এবং বরাদ্দ করা (পূর্ব-কাঁটাচালিত) প্রক্রিয়াটির জন্য অপেক্ষা / সময় নির্ধারণের চেয়ে তফসিল শর্তাদির ক্ষেত্রে আরও দক্ষ। অথবা আপনার কী মনে হয় যে এসএসএলের পুরো শিরোনাম রয়েছে।
সিমকিবিয়ান

9
@ সাইমকিবিয়ান তাই আপনি কি বলছেন যে 15% র‌্যাম ব্যবহার তাৎপর্যপূর্ণ নয়? এটা ঠিক আছে, তবে আমার মতামত অন্যথায় হবে। সংক্ষিপ্ত পারফরম্যান্সের দাবিগুলি আমার নিজের নয়। এখানে দেখুন । এবং SSL পার্থক্য স্পষ্টভাবে বানান আউট হয় ঘটনা MPM জন্য ডকুমেন্টেশনে:The improved connection handling does not yet work for certain connection filters, in particular SSL. For SSL connections, this MPM will fall back to the behaviour of the worker MPM and reserve one worker thread per connection.
শেন ম্যাডেন

3
@ শানেম্যাডেন `এবং এটি এখনও রিসোর্স ব্যবহার বা স্কেলের ক্ষেত্রে এনজিনেক্স বা লাইটটিপিডির পছন্দগুলির সাথে সামঞ্জস্যপূর্ণ নয়` আমি এই দুটি সিস্টেমই অ্যাপাচি মেঝেতে পেয়েছি।
কেলি এলটন

এসএসএল এবং ইভেন্টের এমপিএম-এর সমস্যা সম্পর্কিত @ শানেম্যাডেন: আপনি কি জানেন যে এনগিনেক্স এপাচের চেয়ে এটি আরও ভালভাবে পরিচালনা করে?
দাসকাজা

দেখে মনে হচ্ছে আপনি এমপিএম মডিউলগুলি না জেনেও যদি আপনি অ্যাপাচি ২.৪ সংকলন করে থাকেন তবে এটি এমডিএম মডিউল নামক মডিউলটির সাথে আসে এবং এটি Mod_php7 নিয়ে কাজ করে (এখনই আমি এমপিএম নিয়ে গবেষণা করছি কারণ অ্যাপাচি ২.৪ মাইএসকিএল সংযোগের সীমা অতিক্রম করছে যখন একই মাইএসকিএল সার্ভারের সাথে অ্যাপাচি ২.২ রয়েছে) না)
বায়োহাজার্ড

8

এটি জিআইএফগুলির সাথে কীভাবে কাজ করে তার একটি ভাল ব্যাখ্যা এখানে দেওয়া হয়েছে:

https://www.datadoghq.com/blog/monitoring-apache-web-server-performance/

সংক্ষেপে: আপনি যদি ২.৪- তে থাকেন এবং আপনার বিপরীত প্রক্সি (প্রেরণকারী) হিসাবে httpd দরকার হয় তাই আপনার পছন্দটি ইভেন্ট এমপিএম


এমনকি যদি আমরা এসএসএল ব্যবহার করি? আমি কোনও এসএসএস নন ওয়েবসাইটটিতে প্রক্সি এবং এসএসএল সক্ষমকারী হিসাবে অ্যাপাচি ব্যবহার করি।
বোকন

@ বোকান হ্যাঁ দেখে মনে হচ্ছে, এটি সেরা, তবে যাইহোক, এসএসএলের জন্য প্রক্সিং সীমিত
ইউরা

বাহ ~ স্বীকৃত উত্তরের চেয়ে ব্লগ পোস্টটি আরও ভাল, এবং জিআইএফগুলি দুর্দান্ত! Thankssss। আপনি আমার দিন বাঁচিয়েছেন।
রিক

6

ফেব্রুয়ারী 2018 পর্যন্ত, ইভেন্ট এমপিএমের জন্য অ্যাপাচি ২.৪ ডকুমেন্টেশন বলেছে যে প্রক্সি হিসাবে অ্যাপাচি ব্যবহার করা ২.৪.২৪ থেকে ডিজাইন হিসাবে কাজ করা থেকে "উন্নত সংযোগ হ্যান্ডলিং" রাখবে। দেখুন সীমাবদ্ধতা অধ্যায়।

বিষয়টি হ'ল প্রক্সি হিসাবে কর্মী প্রতিক্রিয়ার শেষ কোথায় তা বলতে পারে না এবং শ্রোতার কাছে নিয়ন্ত্রণ ফিরিয়ে দেওয়ার আগে পুরো প্রতিক্রিয়া না দেখা পর্যন্ত অপেক্ষা করতে বাধ্য করা হবে।

এই কারণে, মনে হয় ওয়ার্কার মডেল ব্যবহার করা যখন অ্যাপাচি প্রক্সি হিসাবে ব্যবহৃত হয় তখন সবচেয়ে ভাল হতে পারে। প্রক্সি পরিবেশে ইভেন্টের মডেলটির সুবিধাগুলি থাকলে তা আমার কাছে সত্যিই পরিষ্কার নয় তবে সম্ভবত রয়েছে।


5

আপনি কোন অ্যাপাচি মডিউলগুলি ব্যবহার করতে চান তার উপর নির্ভর করে। আমি মনে করি কর্মী সাধারণত ডিফল্ট পছন্দ, তবে কিছু (পুরানো) মডিউলগুলি কাঁটাচামচ করা প্রয়োজন এবং প্রিফোর্কের উপর নির্ভর করে।

আপনার যদি কোনও পছন্দ না থাকে তবে আমি আপনাকে ওএস বিতরণ থেকে পছন্দসই নির্ভরতা নিয়ে যেতে পরামর্শ দিই। উদাহরণস্বরূপ উবুন্টু যখন এমপিএম-কর্মী ইনস্টল করবেন তখন আপনি ডিফল্টরূপে ইনস্টল করবেন install

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