আপনি কীভাবে লোড টেস্টিং এবং ওয়েবসাইটগুলির জন্য সক্ষমতা পরিকল্পনা করেন?


113

এটি ওয়েবসাইটগুলির জন্য সক্ষমতা পরিকল্পনা সম্পর্কে একটি সাধারণ প্রশ্ন

সম্পর্কিত:

ওয়েব সাইট এবং ওয়েব-অ্যাপ্লিকেশনগুলির জন্য ক্ষমতা পরিকল্পনার কয়েকটি প্রস্তাবিত সরঞ্জাম এবং পদ্ধতিগুলি কী কী?

বিভিন্ন ওয়েব সার্ভার, ফ্রেমওয়ার্ক ইত্যাদির জন্য বিভিন্ন সরঞ্জাম এবং কৌশল এবং সেইসাথে সাধারণভাবে ওয়েব সার্ভারগুলিতে প্রযোজ্য সেরা অনুশীলনগুলি নির্দ্বিধায় নির্দ্বিধায় অনুভব করুন।

উত্তর:


127

সংক্ষিপ্ত উত্তরটি হ'ল: আপনি ব্যতীত কেউ এই প্রশ্নের উত্তর দিতে পারে না।

দীর্ঘ উত্তরটি হ'ল আপনার নির্দিষ্ট কাজের চাপকে বেঞ্চমার্ক করা এমন একটি জিনিস যা আপনার নিজের হাতে নেওয়া দরকার কারণ এটি "স্ট্রিংয়ের টুকরো কত দিন?" জিজ্ঞাসা করার মতো।

একটি সাধারণ এক পৃষ্ঠার স্থির ওয়েবসাইট পেন্টিয়াম প্রো 150 এ হোস্ট করা যেতে পারে এবং এখনও প্রতিদিন হাজার হাজার ইমপ্রেশন পরিবেশন করে।

এই প্রশ্নের উত্তর দেওয়ার জন্য আপনার যে প্রাথমিক পদ্ধতির দরকার তা হ'ল এটি চেষ্টা করে দেখুন কী ঘটে। এমন প্রচুর সরঞ্জাম রয়েছে যা আপনি কৃত্রিমভাবে আপনার সিস্টেমটিকে চাপের মধ্যে রেখে দেখতে পারেন যে এটি কোথায় বকবে।

এর একটি সংক্ষিপ্ত বিবরণ হ'ল:

  • আপনার দৃশ্যের জায়গায় রাখুন
  • পর্যবেক্ষণ যোগ করুন
  • ট্র্যাফিক যুক্ত করুন
  • ফলাফল মূল্যায়ন
  • ফলাফলের উপর ভিত্তি করে তাত্ক্ষণিক
  • ধুয়ে ফেলুন, যুক্তিযুক্ত খুশি হওয়া পর্যন্ত পুনরাবৃত্তি করুন

আপনার দৃশ্যের জায়গায় রাখুন

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

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

সুতরাং, আমি একটি মিড-চালিত ভার্চুয়াল মেশিন স্থাপন করতে যাচ্ছি (দুটি কোর, 512 এমবি র‌্যাম, 4 জিবি এইচডিডি) এবং আমার প্রিয় লোড ব্যালেন্সারটি ভিএম-তে রেড হ্যাট লিনাক্সেরhaproxy ভিতরে ইনস্টল করব ।

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

পর্যবেক্ষণ যোগ করুন

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

haproxyলোড ব্যালান্সার সংযোগগুলি পরিচালনা করতে পারে তা নিশ্চিত করার জন্য আমি উদাহরণে র‌্যাম, সিপিইউ এবং ডিস্ক ব্যবহারও নিরীক্ষণ করব ।

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

আপনি সর্বদা নিরীক্ষণ করতে চান এমন কয়েকটি বিষয়:

  • CPU 'র ব্যবহার
  • র‌্যাম ব্যবহার
  • ডিস্ক ব্যবহার
  • ডিস্কের বিলম্ব
  • নেটওয়ার্ক ব্যবহার

আপনি বিশেষত যা পরীক্ষা করছেন তার উপর নির্ভর করে আপনি এসকিউএল ডেডলকগুলি দেখতে, সময় সন্ধান করা ইত্যাদিও চয়ন করতে পারেন।

ট্র্যাফিক যুক্ত করুন

এখানেই জিনিসগুলি মজা পায়। এখন আপনাকে একটি পরীক্ষার বোঝা অনুকরণ করতে হবে। আছে সরঞ্জাম প্রচুর যে কনফিগার অপশন সঙ্গে এটা করতে পারেন:

একটি নম্বর, যে কোনও সংখ্যা চয়ন করুন। ধরা যাক আপনি কীভাবে প্রতি মিনিটে 10,000 হিট দিয়ে সিস্টেমটি প্রতিক্রিয়া দেখছেন। আপনি কোন নম্বরটি বেছে নিচ্ছেন তা বিবেচ্য নয় কারণ আপনি এই পদক্ষেপটি বহুবার পুনরাবৃত্তি করতে চলেছেন, সিস্টেমটি কীভাবে প্রতিক্রিয়া দেখায় সেই সংখ্যাটি উপরে বা নীচে সামঞ্জস্য করে।

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

ম্যাজিক গো বোতাম টিপুন এবং দেখুন আপনার ওয়েব সার্ভারগুলি গলে যাবে এবং ক্রাশ হবে।

ফলাফল মূল্যায়ন

সুতরাং, এখন আপনাকে পদক্ষেপে সংগ্রহ করা আপনার মেট্রিকগুলিতে ফিরে যেতে হবে 2 আপনি দেখতে পাচ্ছেন যে 10,000 সমবর্তী সংযোগের সাথে আপনার haproxyবাক্সটি সবে ঘাম ঝরছে, তবে দুটি ওয়েব সার্ভারের সাথে প্রতিক্রিয়া সময়টি পাঁচ সেকেন্ডেরও বেশি সময় স্পর্শ করে। এটি দুর্দান্ত নয় - মনে রাখবেন, আপনার প্রতিক্রিয়ার সময়টি দুই সেকেন্ডের জন্য লক্ষ্য করে। সুতরাং, আমাদের কিছু পরিবর্তন করা দরকার।

Remediate

এখন, আপনার ওয়েবসাইটকে দ্বিগুণেরও বেশি গতি বাড়ানো দরকার। সুতরাং আপনি জানেন যে আপনার হয় স্কেল আপ বা স্কেল আউট করা প্রয়োজন।

স্কেল বাড়ানোর জন্য আরও বড় ওয়েব সার্ভার, আরও র‍্যাম, দ্রুত ডিস্ক পান।

স্কেল আউট করতে, আরও সার্ভার পান।

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

আপনি যদি দেখেছেন যে পরীক্ষার সময় প্রসেসরটি 100% বসে ছিল, সম্ভবত বিদ্যমান সার্ভারগুলির উপর চাপ কমাতে আপনাকে অতিরিক্ত ওয়েব সার্ভার যুক্ত করতে স্কেল করতে হবে।

কোনও জেনেরিক সঠিক বা ভুল উত্তর নেই, কেবলমাত্র আপনার পক্ষে সঠিক। স্কেলিং চেষ্টা করুন, এবং যদি এটি কার্যকর না হয় তবে তার পরিবর্তে স্কেল বাড়ান। বা না, এটি আপনার এবং বাক্সের বাইরে কিছু চিন্তাভাবনা।

ধরা যাক আমরা স্কেল করতে চলেছি। সুতরাং আমি আমার দুটি ওয়েব সার্ভার (তারা ভিএম) ক্লোন করার সিদ্ধান্ত নিয়েছি এবং এখন আমার চারটি ওয়েব সার্ভার রয়েছে।

ধুয়ে ফেলুন, পুনরাবৃত্তি করুন

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

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


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

10

সক্ষমতা পরিকল্পনা পরিমাপ দিয়ে শুরু হয়, এক্ষেত্রে প্রতিক্রিয়া সময় বনাম লোড। প্রোগ্রামগুলি লোডের সাথে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে নামিয়ে নেওয়ার পরে, আপনি একটি প্রতিক্রিয়া সময় লক্ষ্য নির্বাচন করতে পারেন, এবং তারপরে নির্দিষ্ট লক্ষ্যমাত্রার বোঝার জন্য লক্ষ্যটি পূরণ করতে কোন সংস্থান গ্রহণ করবে তা আবিষ্কার করতে পারেন।

পারফরম্যান্স পরিমাপ সর্বদা সময় ইউনিট হিসাবে সম্পন্ন হয়

  • তারা ব্যবহারকারীদের যত্নশীল
  • এগুলি উপরে এবং নীচে ছোট করা যায়

% সিপিইউ এবং আইওপিএসের মতো বিষয়গুলি সিস্টেম-নির্দিষ্ট, সুতরাং আপনি কেবল তখনই সেগুলি ব্যবহার করেন যখন আপনি সিস্টেমটি পরিকল্পনা করেন এবং প্রাক-উত্পাদনে এটি পরিমাপ করেন, আপনি যে বিষয়টির জন্য সময় প্রয়োজন সেটির জন্য "সারোগেট" হিসাবে কাজ করবেন।


8

সক্ষমতা পরিকল্পনা একটি ঝামেলা জন্তু। এটি শিল্পের মতোই বিজ্ঞান (যদি অবশ্যই অন্ধকার হয়)।

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

কোন চাপ নেই...

দুর্ভাগ্যক্রমে, ক্ষমতা পরিকল্পনার অন্ধকার শিল্পটি একক সার্ভার ফল্ট উত্তরে যুক্তিসঙ্গতভাবে ছড়িয়ে দেওয়া যেতে পারে; সত্যই, এটি বইয়ের যোগ্য একটি বিষয়।

ভাগ্যক্রমে, এখানে একটি বই রয়েছে: " ক্যাপাসিটি প্ল্যানিং এর আর্ট "


5

মার্ক হেন্ডারসনের পোস্টে প্রসারিত করার জন্য, আমি এপাচে এটি নির্দিষ্ট লিখছি। তিনি যা বলেছিলেন তার পুনরাবৃত্তি করতে, "সংক্ষিপ্ত উত্তরটি: আপনি ছাড়া কেউ এই প্রশ্নের উত্তর দিতে পারে না।" এই উত্তরটির পাঠ্যটি আমার একটি উত্তর থেকে একটি দ্রুপাল ওয়েবসাইটের পারফরম্যান্স সম্পর্কে একই প্রশ্নে ধার করা হয়েছে ।

Mod_Prefork দিয়ে অ্যাপাচি কনফিগার করা হচ্ছে

অ্যাপাচি তর্কযোগ্যভাবে অন্যতম (যদি না হয়) সর্বাধিক জনপ্রিয় ওয়েব সার্ভারে উপলব্ধ। এটি ওপেন সোর্স এবং এখনও সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হচ্ছে। আপনি এটি লিনাক্স এবং উইন্ডোজ উভয় অপারেটিং সিস্টেমে চালাতে পারেন তবে লিনাক্স / ইউনিক্স বিশ্বে আরও জনপ্রিয়।

আপনার কখনই অফ-অফ-বাক্স অ্যাপাচি কনফিগার করা উচিত নয়। আপনার সাইটে সর্বদা আপনার অ্যাপাচি টিউন করা দরকার। সেন্টোসের মূল অ্যাপাচি কনফিগারেশন ফাইলটি অবস্থিত /etc/httpd/conf/httpd.confএবং উবুন্টু সিস্টেমে মূল অ্যাপাচি কনফিগারেশন ফাইলটি সাধারণত অবস্থিত /etc/apache2/apache2.confভার্চুয়াল হোস্টগুলির মতো জিনিসের জন্য অতিরিক্ত কনফিগার ফাইল ব্যবহার করা হয় ।

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

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

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

এটি অবশ্যই শেষ-সব উত্তর নয়। আপনার অ্যাপাচি সার্ভারটি টিউন করতে সময় লাগে এবং ঠিক সঠিকভাবে অভিজ্ঞতা পেতে প্রয়োজন।


1
কেবলমাত্র উপরের ভিত্তিতে মেমরির ব্যবহারটি কিছুটা ত্রুটিযুক্ত, দয়া করে পরীক্ষা করুন stackoverflow.com/questions/7880784/… এছাড়াও আপনি মেমরির ব্যবহারের জন্য শীর্ষের পরিবর্তে পাইথন স্ক্রিপ্ট "ps_mem.py" ব্যবহার করতে পারেন, বা এমনকি সংযুক্ত মানগুলি ব্যবহার করতে পারেন অধীন প্রক্রিয়াতে / কেনা
ডেনিস নোল্টে

1
আপনি যে নোটটি যুক্ত করেছেন তার পুরো উত্তরটি মূল্যবান: "আপনার কখনই বাক্সের বাইরে অ্যাপাচি কনফিগারেশন ব্যবহার করা উচিত নয়"। আমরা কখনই এটিকে যথেষ্ট চাপ দিতে পারি না।
ইজরা-গুলি

0

এছাড়াও আমি আর্কিটেক্টস এবং ইঞ্জিনিয়ারদের সাথে কথা বলার পরামর্শ দেব যারা আড়ালগুলি, ব্যর্থতার একক পয়েন্ট এবং লাইসেন্সিং সীমাবদ্ধতাগুলি সনাক্ত করার চেষ্টা করার জন্য অ্যাপ্লিকেশনগুলি ডিজাইন / তৈরি করেছেন।

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