ভারী বোঝার জন্য ভিপিএসে চলমান অ্যাপাচি / পিএইচপি / মাইএসকিএল অনুকূলিত করুন


17

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

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

আমি ধরে নিয়েছি যে এখানে পর্যাপ্ত র‌্যাম রয়েছে (যা করার জন্য আমি চেষ্টা করছি) আমি এখানে 'কম মেমরির জন্য অনুকূলিতকরণ' প্রশ্নের চেয়ে পৃথক, আমার কেবল সার্ভারকে ভারী বোঝার নিচে চেপে যাওয়ার দরকার নেই।

কোন পুনঃব্যবস্থা?


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

উত্তর:


18

পিএইচপি-র জন্য 2 টি গুরুত্বপূর্ণ জিনিস রয়েছে যা ক্ষমতা বাড়িয়ে তুলবে:

  1. উল্লিখিত হিসাবে উন্নত পিএইচপি ক্যাচিং (এপিসি)। এটি আমরা ইয়াহুতে ব্যবহার করি! অনুরূপ অন্যান্য প্রকল্প রয়েছে, তবে এটি হ'ল রাসমাসের শিশু।
  2. Mod_php এর পরিবর্তে ফাস্টসিজিআই। এই সমস্যাটি নিয়ে তর্ক চলছে কারণ মোড_এইচপিপি সাধারণত দ্রুত হয় usually তবে, আমি ধরে নেব যে আপনার কাছে একটি একা অ্যাপাচি সার্ভার রয়েছে যা ডায়নামিক পিএইচপি সামগ্রী এবং স্থিতিশীল সম্পদ (জেএস, সিএসএস, ফ্ল্যাশ, চিত্র, পিডিএফ, ইত্যাদি) সরবরাহ করে। এই স্থিতিশীল সম্পদের জন্য অনুরোধগুলিকে ততটা মেমরি গ্রাস করার দরকার নেই, তবে পিএইচপি হ'ল এটি একটি মডিউল যা প্রতিটি অ্যাপাচি থ্রেডে রয়েছে।

অ্যাপাচি এর জন্য:

  1. কর্মী এমপিএম ব্যবহার করুন
  2. কিপএলাইভ সক্ষম করুন

এছাড়াও আপনি যতদূর অ্যাপাচি থেকে স্যুইচ বিবেচনা যেতে পারে lighttpd , অথবা nginx । আমি আপাচে ভালোবাসি। আমি এর অনেকগুলি উন্নত বৈশিষ্ট্যগুলির মধ্যে বোকা ব্যবহার করি। আমি এর ওভারহেড গ্রহণ করি কারণ এটি যা দেয় তা আমার প্রয়োজন। সাধারণ ল্যাম্প স্ট্যাকের জন্য এটি প্রয়োজনের চেয়ে বেশি এবং সম্পদের অপচয়।

মাইএসকিউএল এর জন্য:

  1. আপনার অপ্টিমাইজেশনের প্রচেষ্টাগুলি আপনার মাই সিএনএফ মানগুলি টিকিয়ে না রেখে প্রশ্নগুলি বিশ্লেষণ এবং সংশোধন করতে ব্যয় করলে 10 গুণ হবে। আমি বলছি না যে আপনার ক্যাচিং, সংযোগ ইত্যাদি সঠিক হওয়া গুরুত্বপূর্ণ নয় ... তবে বেশিরভাগ মানুষের ক্ষেত্রে সমস্যাটি কেবল 9%।
  2. আপনার QA চলাকালীন, প্রেরিত সমস্ত প্রশ্নের ক্যাপচারের জন্য আপনার স্টেজিং / দেব মাইএসকিএলএডের সাধারণ কোয়েরি লগটি চালু করুন । (এটি আপনার প্রোডাকশন মাইএসকিএল সার্ভারে করবেন না!)
  3. প্রশ্নগুলি বিশ্লেষণ করতে এক্সপ্লেইন ব্যবহার করুন । বিশেষত যদি আপনি কোনও ওআরএম (ডিবি বিমূর্ত করে তোলে এবং আপনার নিজের এসকিউএল লেখার হাত থেকে দূরে রাখে) দিয়ে কোনও কাঠামো ব্যবহার করছেন তবে আপনাকে বহিরাগত জোয়িনগুলি পরিষ্কার করতে হবে, কোন ধরণের বিধিবিহীন নির্বাচনগুলি নির্বাচন করতে হবে, 'ফাইলপোর্ট ব্যবহার করে' অর্ডার দেওয়া বাই, এবং অনুসন্ধানগুলি যে কোনও সূচক ব্যবহার করে না।
  4. আপনি যদি মাইএসকিউএল 5.1 ব্যবহার করেন তবে ক্যোয়ারী প্রোফাইলারের সুবিধা নিন

বিবেচনাযোগ্য অন্যান্য সরঞ্জামগুলি এমকে-ভিজ্যুয়াল-ব্যাখ্যা explain

আমি 10 দুর্দান্ত উল্লেখ উল্লেখ করেছি। এই বিষয়গুলি আপনাকে গুনগুন করা উচিত। এটি কীভাবে সক্রিয় হয় তা দয়া করে আমাদের জানান।


6

আপনার পিএইচপি সেশন ফাইলগুলি একটি tmpfs এ সরান , APC (বা অন্যান্য) ব্যবহার করুন এবং আপনার প্রয়োজন হয় না এমন সমস্ত পিএইচপি মডিউল সরান । আপনার প্রয়োজন / ব্যবহারের প্রয়োজন নেই এমন সমস্ত অ্যাপাচি মডিউল সরান ।

একটি tmpfs তৈরি করতে (র‌্যামে একটি ডিরেক্টরি!)

mkdir /tmpfs; chmod 777 /tmpfs
mount -t tmpfs -o size=256M tmpfs /tmpfs

ইন / ইত্যাদি / fstab পুনরায় বুট করতে এটি তৈরি করতে নীচের লাইনটি যুক্ত করুন!

tmpfs     /tmpfs    tmpfs   size=256m,mode=0777    0       0

ইন /etc/apache2/php.ini র্যাম (tmpfs) আপনার সেশন সংরক্ষণ সমন্বয়!

session.save_handler = files
session.save_path = "/tmpfs"

দ্রষ্টব্য: র‌্যামে আপনার পিএইচপি ফাইল এবং সেশন ফাইলগুলির সাহায্যে আপনি সবেই ডিস্কটি স্পর্শ করেন!

অ্যাপাচে এক্সপায়ার_মডিউল ব্যবহার করুন যাতে ব্রাউজারগুলি বেশিরভাগ জিনিসকে ক্যাশে করে।

ExpiresActive On
ExpiresDefault "access plus 90 days"
ExpiresByType image/gif "access plus 90 days"
ExpiresByType image/ico "access plus 90 days"
ExpiresByType image/png "access plus 90 days"
ExpiresByType image/jpeg "access plus 90 days"
ExpiresByType image/x-icon "access plus 90 days"
ExpiresByType text/css "Access plus 90 days"
ExpiresByType text/html "Access plus 90 days"
ExpiresByType application/x-shockwave-flash "Access plus 90 days"
ExpiresByType application/x-javascript "Access plus 90 days"

.Htaccess ফাইল ব্যবহার করবেন না ! পরিবর্তে, তাদের vhost কনফিগারেশনে হার্ড কোড করুন! সমস্ত HTTP অনুরোধ অনুসারে ডিস্ক চেকগুলিকে মারাত্মকভাবে বাদ / কমিয়ে দেবে ... এটি সত্যিই যুক্ত হয়।

Options FollowSymLinks 
AllowOverride None

আপনার vhost.conf ফাইলে .htaccess ব্যবহারের উদাহরণ ...

<Directory /home/user/www/site.com/secure>
    Order Allow,Deny
    Deny from All
</Directory>

5

কয়েকটা জিনিস মাথায় আসে।

ওপকোড ক্যাশে সর্বদা একটি ভাল ধারণা। আমি এপিসির চেয়ে http://eaccelerator.net/ পছন্দ করি । আপনি যদি এপিসির সাথে বিকাশ না করে থাকেন তবে এটিকে যুক্ত করার চেষ্টা করা প্রায় সর্বদা বেদনাদায়ক is কল্পকাহিনী যেমন অভিনব নয় ঠিক তখনই কাজ করে বলে মনে হচ্ছে cele

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

আপনি যদি কমপক্ষে 5.1.24 এর মতো মাইএসকিএল 5.1 এর মোটামুটি সাম্প্রতিক সংস্করণটি চালাচ্ছেন তবে আপনার এখন সাব স্লো লগগুলিতে অ্যাক্সেস রয়েছে। আমি দীর্ঘ_ প্রশ্ন_সামগ্রী 1 বা 2 এ শুরু করব এবং এরপরে এটি 0.5 এ নামিয়ে আনব কারণ আপনি সত্যিই দীর্ঘ লোকগুলির উপর একটি হ্যান্ডেল পাবেন। নেট থেকে মাইকিউএল এর জন্য প্রচুর সাধারণ টিউনিংয়ের তথ্য রয়েছে তবে আপনার বেশি করার মতো র‌্যাম নেই। আপনি কি ডিফল্ট থেকে কোনও সেটিংস বাড়িয়েছেন? সর্বাধিক ডিফল্ট my.cnf ফাইলগুলি প্রায় M৪ এমবি র‌্যাম ব্যবহারের জন্য কনফিগার করা হয়। এটি খুব কমপক্ষে আমি কী_বফারটি 16 এমবি থেকে 64 এমবিতে বাড়িয়েছি।

অতিরিক্তভাবে আপনি মাইসাম বা ইনোডব টেবিলগুলি ব্যবহার করছেন? আপনি যদি ডিবিতে সেশন রাখেন তবে আপনি সেশন টেবিলটি ইনোডব (অথবা পরিবর্তে এটি কুকি তৈরি করুন) করতে চান বরং এটি মাইসিয়াম টেবিলটি রেখে যা সারি স্তর লকিংয়ের পরিবর্তে টেবিল স্তর লক করে। মূলত যে কোনও সারণী যা 20% এর বেশি 80% পড়তে লিখতে হবে তা ইনোডবিতে যাওয়ার জন্য প্রার্থী। মনে রাখবেন আপনাকে মাইসাম টেবিল এবং ইনডাব টেবিলের মধ্যে র্যামের পরিমাণ ভারসাম্য বজায় রাখতে হবে কারণ প্রত্যেকের জন্য বাফার আলাদাভাবে কনফিগার করা হয়েছে।

এবং সর্বশেষে আরও 512 এমবি র‌্যাম আপনার সেটআপে বা আরও একটি 512 এমবি ভিপিএস মাইএসকিএল চালানোর জন্য আরও সস্তা হবে যদি এটি সস্তা বা মোটামুটি একই দাম হয়। আমি আসলে একটি দ্বিতীয় উদাহরণের দিকে ঝুঁকতাম কারণ এটি উপলব্ধ ডিস্কের IO দ্বিগুণ করবে। ভিপিএস সার্ভারগুলির মধ্যে অন্যতম সমস্যা হ'ল আপনার আইও একই শারীরিক সার্ভারের অন্যান্য ব্যক্তিদের থেকে সুরক্ষিত নয়।

হুম আমার পোস্টটি সমস্ত ধরণের বিচ্ছুরিত, তবে আপনাকে দেখতে অনেক জায়গা দেয়। শুভকামনা।


2
  • পিএইচপি যেমন এপিসির জন্য একটি অপকোড ক্যাশে ব্যবহার করুন।
  • স্কুইড বা বার্নিশের মতো কোনও http এক্সিলারেটর ব্যবহার করুন।

1

নিম্ন মেমরির পরিস্থিতিতে (512 এমবি কম, একটি উচ্চ ট্র্যাফিক সার্ভারের জন্য) আপনার ওয়েব সার্ভার এবং ডিবি ইঞ্জিনটি বেছে নেওয়ার বিষয়টি বিবেচনা করা উচিত।

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

স্ক্লাইটটি মাইএসকিউএল থেকে অনেক বেশি শক্ত এবং অনেক শর্তেও দ্রুত। আপনি যে ইঞ্জিনটি ব্যবহার করছেন তা এটিও সমর্থন করে কিনা এবং এটি যদি একবার চেষ্টা করেও দেখুন।

অন্য বিকল্পটি, সহজ বিকল্পটি হ'ল আপনি যদি সামর্থ্য করতে পারেন তবে ভিএম-তে আরও র‌্যাম পাওয়া।


1

এখানে দুর্দান্ত পরামর্শগুলির বাইরেও, এটি লক্ষ্য করা উচিত যে সমস্ত ভিপিএস সমান তৈরি হয় না। আমার অভিজ্ঞতায় পিএইচপি সিপিইউ ভারী হয়ে উঠেছে।

ইসি 2-তে এনগিনেক্স / এপিসি / পিএইচপিএফএম / মাইএসকিএল (স্থানীয়) এর একটি ওয়ার্ডপ্রেস এবি বেঞ্চমার্ক (ab -n 500 -c 25 http://domain.com/index.php ) তাদের প্রবেশের স্তরে ~ 2 অনুরোধ / সেকেন্ডের ফলস্বরূপ র‌্যাম / 1 কম্পিউট ইউনিট সার্ভার "।

512 এমবি র্যাকস্পেস ক্লাউডসার্ভারে একই সঠিক স্ট্যাকের (একই স্ক্রিপ্ট দ্বারা অভিন্ন অ্যাসে স্থাপন করা) বিপরীতে একই বেনমার্ক চালান ~ 80 রেক / সেকেন্ড। সুতরাং 4x কম র‌্যাম, এই প্রাথমিক পরীক্ষায় 40x পারফরম্যান্স।

এবিটির সময় শীর্ষস্থানীয় আপনি দেখতে পাচ্ছেন যে ইসি 2 সহজেই সমঝোতা পরিচালনা করতে পারে না এবং সাথে সাথে 100% সিপিইউ লোড এবং লক আপকে আঘাত করবে। 512 এমবি সার্ভারে শীর্ষ পর্যবেক্ষণ (ভার্চুয়ালাইজড কোয়াড কোর সিপিইউ) একই বেনমার্কটি ঘুরে দেখছে, কোরগুলি ~ 60% লোড এবং সহজেই মাপদণ্ডটি পরিচালনা করবে bench

ভিপিএসগুলি স্পিন আপ করা এবং কোনও প্রতিশ্রুতি ছাড়াই বন্ধ করা অত্যন্ত সহজ, আপনার ভিএম / ভিপিএস পরীক্ষায় অবতীর্ণ অবকাঠামোটি স্থাপন করা ক্ষতি করে না!

সম্পাদনা 1: এছাড়াও, ইসি 2-র "হাই সিপিইউ" ছোট ইনস্ট্যান্স কেবলমাত্র 10 ডলার / রেকিউ সেকেন্ড উপার্জন করতে সক্ষম হয়েছিল, সিপিইউ এখনও বাধা হিসাবে রয়েছে। আমার উপসংহারটি ছিল যে আপনি ইসি 2 এর সাথে স্থায়িত্ব / দৃust়তার জন্য পারফরম্যান্স ত্যাগ করেন এবং অবশ্যই এমন অনেকগুলি ব্যবহারের মামলা রয়েছে যা এই জাতীয় পরিবেশের জন্য ডাকে।


এছাড়াও, এনজিনেক্স বিবেচনা করুন (আজ প্রকাশিত v.1)। ওয়ার্ডপ্রেস.কম তার লাইটস্পিড কনফিগারেশনকে এনজিনেক্সের সাথে সরিয়ে নিয়েছে যাতে এটি স্পষ্টতই একটি সক্ষম ওয়েবসারভার।
iainlbc

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