আপনার অ্যাপাচি ওয়েব সার্ভারের পারফরম্যান্স বুস্ট করার জন্য 5 টিপস


নেটক্রাফ্টের এক সাম্প্রতিক প্রতিবেদন অনুসারে (একটি বিখ্যাত ইন্টারনেট সংস্থা যা অন্যান্য পরিষেবাদির ওয়েব ব্রাউজার ব্যবহারের পরিসংখ্যান সরবরাহ করে), সাইটগুলি এবং ইন্টারনেট-মুখী কম্পিউটারগুলির মধ্যে অ্যাপাচি সর্বাধিক ব্যবহৃত ওয়েব সার্ভার হিসাবে অবিরত রয়েছে।

অতিরিক্তভাবে, অ্যাপাচি শীর্ষ ওয়েব সার্ভারগুলির মধ্যে বৃহত্তম বিকাশের অভিজ্ঞতা অর্জন করে, তার পরে এনগিনেক্স এবং আইআইএস। সুতরাং, আপনি যদি অ্যাপাচি ইনস্টলেশন পরিচালনার দায়িত্বে কোনও সিস্টেম প্রশাসক হন তবে আপনার ওয়েব সার্ভারটি আপনার (বা আপনার ক্লায়েন্টের) প্রয়োজন অনুযায়ী তার সক্ষমতা সর্বোত্তমভাবে সম্পাদন করে কিনা তা নিশ্চিত করতে হবে।

এই নিবন্ধে আমরা কয়েকটি টিপস নিয়ে আলোচনা করব যা আপনাকে নিশ্চিত করে যে অ্যাপাচি সুচারুভাবে চলবে এবং দূরবর্তী ক্লায়েন্টদের কাছ থেকে আপনি যে পরিমাণ অনুরোধ আশা করছেন তা পরিচালনা করতে সক্ষম হবে।

যাইহোক, দয়া করে মনে রাখবেন যে অ্যাপাচি বেঞ্চমার্ক রেকর্ড স্থাপনের উদ্দেশ্যে তৈরি করা হয়নি - তবে, এটি সম্ভবত আপনি যে কোনও ব্যবহার ক্ষেত্রে সম্ভবত উচ্চতর কর্মক্ষমতা সরবরাহ করতে সক্ষম।

টিপ # 1: এপাচি সর্বদা সর্বশেষতম সংস্করণে আপডেট রাখুন

এটি বলে ছাড়াই যায় যে অ্যাপাচি এর সর্বশেষতম সংস্করণ ইনস্টল করা সম্ভবত আপনাকে প্রথমে বিবেচনা করা উচিত। ১৯ ই নভেম্বর, ২০১৫ অবধি, সেন্টোস rep টি সংগ্রহস্থলীতে অ্যাপাচি-র সর্বশেষ সংস্করণটি ২.৪. is, যেখানে দেবিয়ান-এর ২.৪.১০ রয়েছে।

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

যে কোনও ইভেন্টে, আপনি বর্তমানে ইনস্টল করা সংস্করণটি নিম্নলিখিত হিসাবে পরীক্ষা করতে পারেন:

# httpd -v               [On RedHat/CentOS based systems]
# apache2 –v             [On Debian/Ubuntu based systems] 

থাম্বের নিয়ম হিসাবে, আপনার নির্বাচিত বিতরণের প্যাকেজ ম্যানেজার দ্বারা সরবরাহিত আপডেট পদ্ধতির সাথে আটকে থাকুন (সেন্টোস বা ডেবিয়ানের জন্য yum আপডেট httpd বা অ্যাপটিচিউড নিরাপদ আপগ্রেড অ্যাপাচি 2 , যথাক্রমে) অন্য কোনও উপায় না থাকলে আপনি অ্যাপাচি এইচটিটিপি সার্ভার প্রকল্পের ওয়েবসাইটে অ্যাপাচি ডকুমেন্টেশন বিভাগে সর্বশেষ প্রকাশিত নোটগুলি পড়তে পারেন।

টিপ # 2: আপনি যদি ২.৪ এর চেয়ে পুরানো কার্নেল ব্যবহার করেন তবে এখনই আপগ্রেড করার কথা বিবেচনা করুন

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

আপনি এখানে বর্তমানে ইনস্টল করা কার্নেলটি দেখতে পারেন:

# uname -r

এবং এটি www.kernel.org- এ সর্বশেষ স্থিতিশীল কার্নেলের সাথে তুলনা করুন (এই লেখার সময় 4.3))

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

টিপ # 3: মাল্টি প্রসেসিং মডিউল (এমপিএম) চয়ন করুন যা আপনার ক্ষেত্রে সবচেয়ে ভাল কাজ করে

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

সংস্করণ ২.৪ দিয়ে শুরু করে অ্যাপাচি আপনার প্রয়োজনের উপর নির্ভর করে বেছে নিতে তিনটি পৃথক এমপিএম সরবরাহ করে:

  1. প্রিফোরক এমপিএম থ্রেডিং ছাড়াই একাধিক শিশু প্রক্রিয়া ব্যবহার করে। প্রতিটি প্রক্রিয়া প্রত্যেকের জন্য পৃথক থ্রেড তৈরি না করে একবারে একটি সংযোগ পরিচালনা করে। খুব বেশি বিশদে না গিয়ে আমরা বলতে পারি যে আপনি কেবলমাত্র এই এমপিএম ব্যবহার করতে চাইবেন যখন কোনও অ্যাপ্লিকেশন ডিবাগ করছে তখনই বা আপনার অ্যাপ্লিকেশনটির যদি মোড_এফপি-এর মতো নন-থ্রেড-নিরাপদ মডিউলগুলির সাথে ডিল করতে হয়
  2. কর্মী এমপিএম প্রতি শিশু প্রক্রিয়াতে কয়েকটি থ্রেড ব্যবহার করে, যেখানে প্রতিটি থ্রেড একসাথে একটি সংযোগ পরিচালনা করে। এটি হাই ট্র্যাফিক সার্ভারগুলির জন্য একটি ভাল পছন্দ কারণ এটি পূর্ববর্তী ক্ষেত্রেের চেয়ে কম রu্যামের সাথে আরও সমবর্তী সংযোগগুলি পরিচালনা করতে দেয়
  3. অবশেষে, ইভেন্ট এমপিএম হ'ল সংস্করণ ২.৪ এবং তারপরের সংস্করণগুলির জন্য বেশিরভাগ অ্যাপাচি ইনস্টলেশনে ডিফল্ট এমপিএম। এটি শ্রমিক এমপিএমের অনুরূপ যে এটি শিশু প্রক্রিয়া অনুযায়ী একাধিক থ্রেড তৈরি করে তবে একটি সুবিধা দিয়ে: এটি কিপলাইভ বা নিষ্ক্রিয় সংযোগগুলি (যখন তারা সেই অবস্থায় থাকে) একক থ্রেড দ্বারা পরিচালিত করে, ফলে স্মৃতি মুক্ত করে দেয় অন্যান্য থ্রেডে বরাদ্দ করা হবে। এই এমপিএমটি Mod_php এর মতো নন-থ্রেড-নিরাপদ মডিউলগুলির সাথে ব্যবহারের জন্য উপযুক্ত নয়, যার পরিবর্তে এই জাতীয় একটি PHP-FPM ব্যবহার করা উচিত instead

আপনার অ্যাপাচি ইনস্টলেশন দ্বারা ব্যবহৃত এমপিএম পরীক্ষা করতে, আপনি এটি করতে পারেন:

# httpd -V

নীচের চিত্রটি দেখায় যে এই নির্দিষ্ট ওয়েব সার্ভারটি প্রিফার্ক এমপিএম ব্যবহার করছে।

এটি পরিবর্তন করতে, আপনাকে সম্পাদনা করতে হবে:

# /etc/httpd/conf.modules.d/00-mpm.conf          [On RedHat/CentOS based systems]
# /etc/apache2/mods-available/<mpm>.load   [On Debian/Ubuntu based systems]

যেখানে এমপিএম_সামেন্ট, এমপিএম_কর্মী, বা এমপিএম_প্রফোর্ক হতে পারে।

এবং পছন্দসই মডিউলটিকে এমনভাবে লোড করে এমন লাইনটি কোনওভাবেই সংঘবদ্ধ করুন:

LoadModule mpm_event_module modules/mod_mpm_event.so

দ্রষ্টব্য: ইভেন্টটি এমপিএমকে ডেবিয়ানে কাজ করতে, আপনাকে নন-ফ্রি সংগ্রহস্থল থেকে libapache2-mod-fastcgi প্যাকেজ ইনস্টল করতে হতে পারে।

অধিকন্তু, সেন্টোসের জন্য আপনার পিএইচপি-এফএমপি (এফসিজি এবং মোড_ফিসিজিড সহ) প্রয়োজন হবে যেখানে ডিবিয়ান এটিকে পিএইচপি 5-এফপিএম (অ্যাপাচি 2-এমপিএম-ইভেন্টের সাথে) বলা হয়।

সর্বশেষে তবে সর্বনিম্ন নয়, ওয়েব সার্ভারটি পুনরায় চালু করুন এবং সদ্য ইনস্টল করা php-fpm (বা php5-fpm) পরিষেবাটি:

# systemctl restart httpd php-fpm && systemctl enable httpd php-fpm
# systemctl restart apache2 php5-fpm && systemctl enable apache2 php5-fpm

যদিও আপনি একটি নির্দিষ্ট এমপিএম ব্যবহারের জন্য অ্যাপাচি সেট করতে পারেন, সেই কনফিগারেশনটি প্রতি ইঙ্গিত হিসাবে একই ভার্চুয়াল হোস্ট ভিত্তিতে ওভাররাইড করা যেতে পারে indicated

প্রতিটি ভার্চুয়াল হোস্টের জন্য কনফিগারেশন ফাইলে কেবল সংশ্লিষ্ট ট্যাগগুলি ফেলে দিন এবং আপনি যেতে প্রস্তুত - তবে নিশ্চিত হন যে আপনি প্রতি ভোস্টে একটি এবং কেবলমাত্র একটি এমপিএম ব্যবহার করছেন।

পরিশেষে, দয়া করে নোট করুন যে আপনার নির্বাচিত বিতরণ নির্বিশেষে, পিএইচপি-এফএমপি ফাস্টসিজিআই বাস্তবায়নের উপর নির্ভর করে, এই কারণেই আমি আগে অতিরিক্ত প্যাকেজ ইনস্টলেশনগুলির প্রস্তাব দিয়েছিলাম।

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

পূর্ববর্তী চিত্রটিতে প্রদর্শিত একই বাক্সে প্রিফোর্ক থেকে ইভেন্টে ডিফল্ট এমপিএম পরিবর্তন করার পরে আমি এটি দেখতে পেয়েছি:

CentOS 7-এ, আপনাকে নিশ্চিত করতে হবে যে ফায়ারওয়ালের মাধ্যমে http এবং https পরিষেবাগুলি সক্ষম করা আছে এবং নেটওয়ার্ক ইন্টারফেস (গুলি) যথাযথভাবে ডিফল্ট জোনে যুক্ত হয়েছে।

উদাহরণ স্বরূপ:

# firewall-cmd --zone=internal --add-interface=tun6to4 
# firewall-cmd --zone=internal --add-interface=tun6to4 --permanent 
# firewall-cmd --set-default-zone=internal 
# firewall-cmd --add-service=http 
# firewall-cmd --add-service=https 
# firewall-cmd --add-service=http --permanent 
# firewall-cmd --add-service=https --permanent 
# firewall-cmd --reload

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

প্রাথমিক পরীক্ষা হিসাবে (আমি নিশ্চিত যে আপনি আরও জটিল বা চাপযুক্ত সম্পর্কে ভাবতে পারেন), আমি একটি পিএইচপি ফাইল তৈরি করব যা দুটি সেন্টোসের একই ডিরেক্টরিতে test.php নামের অন্য একটি ফাইলের অস্তিত্ব পরীক্ষা করে check একই হার্ডওয়্যার বৈশিষ্ট্য এবং লোড সহ 7 টি সার্ভার কিন্তু আলাদা এমপিএম সহ। তাদের মধ্যে একটি ইভেন্ট ব্যবহার করবে এবং অন্যটি প্রিফোর্ক ব্যবহার করবে:

এটিই এই পিএইচপি কোড যা আমি চেকফিলিএক্সিস্টস.পিএইচপি নামের একটি ফাইলে সংরক্ষণ করেছি:

<?php
$filename = 'test.php';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>

তারপরে 2000 অ্যাপ্লিকেশনগুলি শেষ না হওয়া পর্যন্ত 200 একযোগে অনুরোধ সহ আমরা অ্যাপাচি বেঞ্চমার্ক সরঞ্জাম (আব) চালাব:

# ab -k -c 100 -n 2000 localhost/checkiffileexists.php

আসুন পরীক্ষা চালান এবং ফলাফলগুলি তুলনা করুন। পারফরম্যান্সের পরিসংখ্যানগুলিতে মনোযোগ দিন:

আপনি দেখতে পাচ্ছেন যে ইভেন্টের সাথে সার্ভারের পারফরম্যান্স এই পরীক্ষার প্রতিটি ক্ষেত্রে তার প্রফোরক কাউন্টার পার্টের চেয়ে চূড়ান্ত।

টিপ # 4: অ্যাপাচের জন্য বুদ্ধিমানভাবে রu্যাম বরাদ্দ করুন

বিবেচনায় নেওয়া সবচেয়ে জটিল হার্ডওয়্যার আইটেমটি হ'ল প্রতিটি অ্যাপাচি প্রক্রিয়ার জন্য বরাদ্দ হওয়া পরিমাণের পরিমাণ। আপনি এটি সরাসরি নিয়ন্ত্রণ করতে পারবেন না, আপনি ম্যাক্সউইকুয়েস্ট ওয়ার্কার্স নির্দেশিকা (যা আগে অ্যাপাচি ২.২-তে ম্যাক্সক্লিয়েন্টস নামে পরিচিত) এর মাধ্যমে শিশু প্রক্রিয়াগুলির সংখ্যা সীমাবদ্ধ করতে পারেন, যা অ্যাপাচে রu্যাম ব্যবহারের সীমাবদ্ধতা রাখে। আবার, আপনি প্রতি হোস্ট বা প্রতি ভার্চুয়াল হোস্ট ভিত্তিতে এই মানটি সেট করতে পারেন।

এটি করার জন্য, আপনার অ্যাপাচি দ্বারা ব্যবহৃত র্যামের গড় পরিমাণের নোটটি নেওয়া উচিত, তারপরে এটিকে ম্যাক্সেকুয়েস্ট ওয়ার্কার্সের সংখ্যা দ্বারা গুণিত করুন এবং এটি মেমরির পরিমাণ যা অ্যাপাচি প্রক্রিয়াগুলির জন্য বরাদ্দ করা হবে। আপনার ওয়েব সার্ভারটি কখনই এটি করতে চান না তা হ'ল সোয়াপ ব্যবহার শুরু করা, কারণ এটির কার্যকারিতা উল্লেখযোগ্যভাবে হ্রাস পাবে। সুতরাং, আপনার সর্বদা অ্যাপাচি দ্বারা রu্যামের ব্যবহার সীমাবদ্ধতার মধ্যে রাখা উচিত এবং এটির জন্য কখনই অদলবদলের উপর নির্ভর করতে পারবেন না।

উদাহরণস্বরূপ, নিম্নলিখিত ব্লকটি একই সাথে ক্লায়েন্টের সংখ্যা 30-তে সীমাবদ্ধ করবে more যদিও এটি অনাকাঙ্ক্ষিত হিসাবে বিবেচিত হতে পারে তবে এটি সার্ভারের জন্য স্বাস্থ্যকর এবং দীর্ঘমেয়াদে এটি আপনার সাইটের পক্ষেও সেরা।

আপনি সেন্টোস বা ডেবিয়ান ব্যবহার করছেন কিনা তার উপর নির্ভর করে আপনি এই ব্লকটি /etc/httpd/conf/httpd.conf বা /etc/apache2/apache2.conf এর মধ্যে রাখতে পারেন।

দয়া করে নোট করুন যে একই নীতিটি সমস্ত এমপিএম-এর ক্ষেত্রে প্রযোজ্য - আমি পূর্ববর্তী টিপরে বর্ণিত ধারণাটি অব্যাহত রাখতে এখানে ইভেন্টটি ব্যবহার করছি:

<IfModule mpm_event_module>
    StartServers 3
    MinSpareThreads          25
    MaxSpareThreads          75
    ThreadLimit                      64
    ThreadsPerChild          25
    MaxRequestWorkers    30
    MaxConnectionsPerChild    1000
</IfModule>

যে কোনও ইভেন্টে, আপনার বাছাইকৃত এমপিএমের জন্য কোন নির্দেশনা অনুমোদিত তা দেখার জন্য আপনি অ্যাপাচি ২.৪ ডক্স উল্লেখ করার জন্য অত্যন্ত পরামর্শ দেওয়া হচ্ছে।

টিপ # 5: আপনার অ্যাপ্লিকেশনগুলি জানুন

থাম্বের নিয়ম হিসাবে, আপনার অ্যাপ্লিকেশনটি কাজ করার জন্য কঠোরভাবে প্রয়োজন হয় না এমন কোনও অ্যাপাচি মডিউল লোড করা উচিত নয়। এটির জন্য আপনার সার্ভারে চলমান অ্যাপ্লিকেশনগুলির কমপক্ষে সামগ্রিক জ্ঞানের প্রয়োজন হবে, বিশেষত যদি আপনি সিস্টেম প্রশাসক হন এবং উন্নয়নের দায়িত্বে আরও একটি দল থাকেন ’s

আপনি বর্তমানে লোড হওয়া মডিউলগুলি এর সাথে তালিকাভুক্ত করতে পারেন:

# httpd -M          [On RedHat/CentOS based systems]
# apache2ctl -M     [On Debian/Ubuntu based systems]

CentOS এ মডিউলগুলি আনলোড/অক্ষম করতে, আপনাকে লোডমডুল (যেটি মূল কনফিগারেশন ফাইলে অথবা /etc/httpd/conf.modules.d এর সহায়তায় রয়েছে) দিয়ে শুরু হওয়া লাইনটি মন্তব্য করতে হবে।

অন্যদিকে, দেবিয়ান মডিউলগুলি অক্ষম করতে a2dismod নামে একটি সরঞ্জাম সরবরাহ করে এবং নিম্নলিখিত হিসাবে ব্যবহৃত হয়:

# a2dismod module_name

এটি আবার সক্ষম করতে:

# a2enmod module_name

উভয় ক্ষেত্রেই, পরিবর্তনগুলি কার্যকর হওয়ার জন্য অ্যাপাচি পুনরায় চালু করতে ভুলবেন না।

সংক্ষিপ্তসার

এই নিবন্ধে আমরা 5 টি টিপস পর্যালোচনা করেছি যা আপনাকে অ্যাপাচি ওয়েব সার্ভার টিউন করতে এবং এর কার্যকারিতা বাড়িয়ে তুলতে সহায়তা করবে। তদ্ব্যতীত, আপনার মনে রাখা উচিত যে সুরক্ষা ব্যতীত অপ্টিমাইজেশন এবং কর্মক্ষমতা অর্থহীন, সুতরাং আপনি linux-console.net এও অ্যাপাচি শক্তকরণ টিপস নিবন্ধটি উল্লেখ করতে পারেন।

যেহেতু আমরা এই নিবন্ধে এই বিষয়ের সমস্ত দিক যথাযথভাবে কভার করতে পারি না, সম্ভবত আপনি অন্যান্য ধারণাগুলি সম্পর্কে ভাববেন যা আপনি সম্প্রদায়ের বাকী অংশগুলির সাথে ভাগ করতে চান। যদি তা হয় তবে নিচে নির্দ্বিধায় আমাদের নীচের মন্তব্য ফর্মটি ব্যবহার করে জানান।