লোড টেস্টিং: প্রতি সেকেন্ডের অনুরোধগুলি কীভাবে উত্পন্ন করা যায়?


14

আমার একটি সার্ভার উপাদান রয়েছে যা জেরোক-আইসির উপর দিয়ে চলে। আমি যখন এটি পরীক্ষা লোড করতে চেয়েছিলাম তখন আমি ভেবেছিলাম যে একাধিক অনুরোধ তৈরি করতে সমান্তরাল লাইব্রেরি ব্যবহার করা এটি করবে। তবে এটি শেষ হয় না। সি # থেকে সমান্তরাল (সমান্তরাল.ফোর্স) লাইব্রেরিটি ব্যবহার করা আপাতদৃষ্টিতে সহজ ছিল তবে একই তাত্ক্ষণিকভাবে একেবারে সমান্তরালভাবে সমস্ত কিছু উত্পন্ন করা হবে বলে মনে হয় না। সুতরাং এটি প্রতি সেকেন্ডে এন অনুরোধ তৈরির সংজ্ঞা হতে পারে না। আমি এটা কিভাবে করব? আমি অনুমান করি যে যে কেউ লোড টেস্টিং করতে চায় প্রথমে এটি সম্পর্কে চিন্তা করবে।

  1. আসলে প্রতি সেকেন্ডে এন অনুরোধগুলি তৈরি করার কার্যকর উপায় কী?

  2. আরেকটি রূপকথার সমান্তরাল প্রোগ্রামিং সম্পর্কে। আপনি যদি সি # বা। ​​নেট এ সমান্তরাল প্রোগ্রামিং প্যাটার্ন ব্যবহার করেন তবে দয়া করে আমাদের আলোকিত করুন। কল্পনা করুন আমার 5 টি প্রক্রিয়া রয়েছে। একই সাথে পাঁচটি প্রক্রিয়া কীভাবে শুরু হবে। আমার সংস্থান ব্যবহারের অর্থ কী? আমি নেট থেকে উপলভ্য অনেকগুলি উপাদান পড়ার চেষ্টা করেছি তবে আমি তাদের প্রশ্নের উত্তর হওয়ার চেয়ে আরও বেশি প্রশ্ন পেয়েছি।

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

  4. আমি এই সময়গুলি পরিমাপ করতে স্টপওয়াচ ক্লাস ব্যবহার করেছি যা সেরা বলে দাবি করে। আমার দৃশ্যে কোনও উপাদান লোড লোড করা, প্রতিক্রিয়ার সময়টি মাপার উপায় কী হবে। স্টপওয়াচ আমার কাছে সেরা সমাধান বলে মনে হচ্ছে। যে কোনও মতামত স্বাগত।

PS: ওয়েব অ্যাপ্লিকেশনগুলির জন্য অনেকগুলি লোড পরীক্ষার সরঞ্জাম রয়েছে। খনি সার্ভার উপাদানগুলির একটি কাস্টমাইজড কেস। এবং আমার প্রশ্নটি প্রতি সেকেন্ডে এন থ্রেড তৈরির সাথে সম্পর্কিত।

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


প্রায়শই জিজ্ঞাসিত প্রশ্নটি যদি এটি নির্দিষ্ট প্রোগ্রামিং সমস্যার সাথে সম্পর্কিত হয় এবং প্রোগ্রামিং পেশায় এটি যদি ব্যবহারিক উত্তরযোগ্য সমস্যা হয় তবে এটি জিজ্ঞাসা করা যেতে পারে। সন্দেহজনক এবং এটি পতাকাঙ্কিত লোকেরা। অনুগ্রহ করে মন্তব্য করুন.
কিং

"একই তাত্ক্ষণিক" বলতে কী বোঝ? আমি অবাক হয়েছি যে আপনি এটি অর্জনে কোনওভাবেই টিপিএল বা প্লিনককে জোর করতে পারেন কিনা।
গার্ট আর্নল্ড

আমার প্রশ্নটি প্রতি সেকেন্ডে এন অনুরোধ উত্পন্ন করার বিষয়ে। এই দৃশ্যে একই তাত্ক্ষণিক সমান্তরাল ফ্যাশনে থ্রেড শুরু হবে সমান্তরাল ব্যবহার সম্পর্কে আমার বোঝার দিকে বোঝানো হয়েছিল।
কিং

আপনি কোন অনুক্রমিক বিশ্লেষণ করেছেন?

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

উত্তর:


10

আমার কাছে সমস্ত উত্তর নেই। আশা করি আমি এর উপর কিছুটা আলোকপাত করতে পারব।

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

আমাকে জানিয়ে দিন যে আমি সকেটগুলিতে কোনও বিশেষজ্ঞ নই এবং আমি জেরোক-আইস সম্পর্কে কিছুই জানিনা। আমি অ্যাসিক্রোনাস অপারেশন সম্পর্কে বিট সম্পর্কে জানি না এবং এটিই এটি আপনাকে সত্যই সহায়তা করবে। আপনি যদি সকেটের মাধ্যমে একটি সংক্রামিত অনুরোধটি প্রেরণ করেন, যখন আপনি কল করবেন Socket.Receive(), কোনও অনুরোধ না পাওয়া পর্যন্ত আপনার থ্রেডটি ব্লক হয়ে যাবে। এটা ভাল না। আপনার থ্রেডটি অবরুদ্ধ হওয়ার পরে আর কোনও অনুরোধ করতে পারে না। সকেট। এর অর্থ, আপনার থ্রেডটি আসলে কোনও লিংক ছাড়াই কোনও লুপে হাজার হাজার অনুরোধ করতে পারে!

যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে আপনি নিজের পরীক্ষার কোডে জেরোক-আইস মাধ্যমে কলগুলি ব্যবহার করছেন, কোনও HTTP শেষ পয়েন্টে পৌঁছানোর চেষ্টা করছেন না। যদি এটি হয় তবে আমি স্বীকার করতে পারি যে জেরোক-আইস কীভাবে কাজ করে তা আমি জানি না। আমি অবশ্য নিম্নলিখিত সুপারিশ করবে এখানে তালিকাভুক্ত পরামর্শ , বিশেষ করে অংশ: Consider Asynchronous Method Invocation (AMI)। পৃষ্ঠাটি এটি দেখায়:

এএমআই ব্যবহার করে ক্লায়েন্ট নিমন্ত্রণ প্রেরণের সাথে সাথেই নিয়ন্ত্রণের সূত্রটি পুনরায় অর্জন করে (বা এটি যদি তাত্ক্ষণিকভাবে প্রেরণ করা যায় না, সারি সজ্জিত করা হয়েছে), ক্লায়েন্টকে সেই থ্রেডটি মাঝের সময়ে অন্যান্য দরকারী কাজ সম্পাদনের অনুমতি দেয় ।

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

সিউডোকোডের কয়েকটি উদাহরণ (আমাকে আসলে এটি শিখতে না দিয়ে এটিকে যথাসম্ভব বরফের কাছাকাছি করার চেষ্টা করা হয়েছিল):

var iterations = 100000;
for (int i = 0; i < iterations; i++)
{
    // The thread blocks here waiting for the response.
    // That slows down your loop and you're just wasting
    // CPU cycles that could instead be sending/receiving more objects
    MyObjectPrx obj = iceComm.stringToProxy("whateverissupposedtogohere");
    obj.DoStuff();
}

একটি ভাল উপায়:

public interface MyObjectPrx : Ice.ObjectPrx
{
    Ice.AsyncResult GetObject(int obj, Ice.AsyncCallback cb, object cookie);
    // other functions
}

public static void Finished(Ice.AsyncResult result)
{
    MyObjectPrx obj = (MyObjectPrx)result.GetProxy();
    obj.DoStuff();
}

static void Main(string[] args)
{
    // threaded code...
    var iterations = 100000;
    for (int i = 0; i < iterations; i++)
    {
        int num = //whatever
        MyObjectPrx prx = //whatever
        Ice.AsyncCallback cb = new Ice.AsyncCallback(Finished);
        // This function immediately gets called, and the loop continues
        // it doesn't wait for a response, it just continually sends out socket
        // requests as fast as your CPU can handle them.  The response from the
        // server will be handled in the callback function when the request
        // completes.  Hopefully you can see how this is much faster when 
        // sending sockets.  If your server does not use an Async model 
        // like this, however, it's quite possible that your server won't 
        // be able to handle the requests
        prx.GetObject(num, cb, null);
    }
}

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

আপনি প্রতি সেকেন্ডে বিপুল সংখ্যক অনুরোধ করতে চাইলে আপনি অবশ্যই থ্রেডগুলিতে এই অনুরোধটি করতে পারবেন। তবে, থ্রেড তৈরির সাথে ওভারবোর্ডে যাবেন না। একটি ভারসাম্য খুঁজে এটির সাথে থাকা। আপনি যদি একটি সিঙ্ক্রোনাস বনাম অ্যাসিক্রোনাস মডেল ব্যবহার করেন তবে আপনি আরও ভাল পারফরম্যান্স পাবেন।

আমি আশা করি এটি সাহায্য করবে.


পারফরম্যান্স নিয়ে এত কথা বলছেন কেন? ওপি যা চায় তা মনে হয় না।
সুইভ

1
@ এসভিক ওয়েল অপ্সের মূল পোস্টটিতে মূলত 4 টি প্রশ্ন ছিল এবং তারা সমান্তরাল বনাম কার্যগুলির কার্যকারিতা সম্পর্কে প্রশ্ন জিজ্ঞাসা করেছিল, তারপরে এটি সম্পাদনা করা হয়েছিল, এবং এখন তারা ফিরে এসেছিল So সুতরাং, আপনি যা পড়েছেন তার বেশিরভাগই এর ফলাফল ছিল। শেষ পর্যন্ত, যদিও তাঁর প্রশ্নের পারফরম্যান্সের সাথে কোনও সম্পর্ক নেই, কারণ তাঁর সাধারণ ধারণাটি সঠিক, তবে দৃশ্যত তার বাস্তবায়নের অভাব রয়েছে। আমি শেষ উত্তর আমার সরু উত্তর প্রশ্ন তিনি বিশ্বাস করা হয়নি আউট সম্পাদনা করুন।
ক্রিস্টোফার কারেনস

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

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

সেগুলিকে আসলে আইসিইর মাধ্যমে প্রেরণে আমার কোনও সমস্যা নেই। সমস্যাটি হ'ল বাস্তবায়নটিকে কীভাবে সংজ্ঞায়িত করে যা আসলে এন অনুরোধ তৈরি করে এবং এমন কিছু যা এই সংখ্যার সাথে সত্য বলা যেতে পারে, এন।
কিং

2

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

আপনার অনুরোধগুলি প্রেরণের জন্য এরকম কিছু কাজ করা উচিত:

WaitCallback del = state => 
{ 
    ManualResetEvent[] resetEvents = new ManualResetEvent[10000]; 
    WebClient[] clients = new WebClient[10000]; 

    for (int index = 0; index < 10000; index++) 
    { 
        resetEvents[index] = new ManualResetEvent(false); 
        clients[index] = new WebClient(); 

        clients[index].OpenReadCompleted += new OpenReadCompletedEventHandler (client_OpenReadCompleted); 

        clients[index].OpenReadAsync(new Uri(@"<REQUESTURL>"), resetEvents[index]); 
    } 

    bool succeeded = ManualResetEvent.WaitAll(resetEvents, 10000); 
    Complete(succeeded); 

    for (int index = 0; index < 10000; index++) 
    { 
        resetEvents[index].Dispose(); 
        clients[index].Dispose(); 
    } 
}; 

while(running)
{
    ThreadPool.QueueUserWorkItem(del);
    Thread.Sleep(1000);
}

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

আপনার তৃতীয় প্রশ্নের জন্য এই লিঙ্কটি একটি পড়ুন http://www.albahari.com/threading/

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


2
এখানে আলাদা অ্যাপডোমাইন তৈরি করতে আপনার কোন সম্ভাব্য কারণ রয়েছে? এটি সম্পূর্ণ অপ্রয়োজনীয় বলে মনে হচ্ছে।
সুইভ

0

থ্রেড দিয়ে বিরক্ত করবেন না, যদি এন যুক্তিসঙ্গতভাবে ছোট হয়। প্রতি সেকেন্ডে এন অনুরোধ উত্পন্ন করতে, প্রাচীর ঘড়ির সময় ( DateTime.Now) ব্যবহার করুন । অনুরোধের আগে এবং পরে উভয়ই সময় নিন, তারপরে Sleepপরবর্তী অনুরোধটি বিলম্ব করতে একটি যুক্ত করুন ।

উদাহরণস্বরূপ, এন = 5 (200 এমএস) সহ:

Before request: 12:33:05.014
After request: 12:33:05.077
Sleep(137)
Before request: 12:33:05.214
After request: 12:33:05.271
Sleep(131)

এটি নিখুঁত নয়; আপনি দেখতে পারেন যে Sleepএটি সঠিক নয়। আপনি বিচ্যুতিগুলির একটি চলমান গণনা রাখতে পারেন (X'th অনুরোধের আগে, সময়টি এক্স -1 / এন পরে হওয়া উচিত) এবং ততক্ষণে ঘুমের সময় সামঞ্জস্য করতে পারেন।

একবার এন খুব বড় হয়ে যাওয়ার পরে আপনি কেবল এম থ্রেড তৈরি করুন এবং প্রতিটি থ্রেড একই ফ্যাশনে এন / এম অনুরোধ তৈরি করতে দিন।


আমাকে খুব বেশি সংখ্যক অনুরোধ উত্পন্ন করতে হবে। সুতরাং এটি বিকল্প হতে পারে না কারণ এটি 100 টি থ্রেডের আগেও আমার মেমরিটি (4 জিবি র‌্যাম) পান করবে।
কিং

আমি প্রতি সেকেন্ডে 20.000 অনুরোধ তৈরি করেছি, 250K কোডে a যাইহোক 100 টি থ্রেড চালানোর জন্য আপনার কাছে পর্যাপ্ত সিপিইউ নেই (মেশিনের ক্লাসটি 4 জিবি নিয়ে আসে না)। পরবর্তী সমস্যাটি সেই সমস্ত অনুরোধগুলি সরিয়ে দেবে; আপনার লোড নির্মাতা এবং আপনার সার্ভারের মধ্যে 10 গিগাবাইট / গুলি ইথারনেট রয়েছে? সুতরাং, আপনি আপনার আসল প্রয়োজনীয়তা যাচাই করতে চাইতে পারেন।
এমসাল্টার

পরিষ্কার করার জন্য, আমার কাছে 20+ জিবিপিএস এর মতো কিছু রয়েছে। সুতরাং এটি কোনও সমস্যা নয়। যন্ত্রগুলির ক্লাস সম্পর্কে, আপনি কী উল্লেখ করছেন? প্রসেসরের সংখ্যা?
কিং

কিং: 100 টি সুতোর ধাক্কা দিতে আমি একটি 48 কোর মেশিন আশা করব expect উদাহরণস্বরূপ, এসজিআই সেই অনেকগুলি কোর সহ মেশিনগুলি বিক্রয় করে তবে আপনি সাধারণত 32GB বা তার বেশি পেতে পারেন।
এমসাল্টারস 20'12

0

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

এটি যদিও ব্যয়বহুল, তবে চূড়ান্ত সংস্করণটি অনেকগুলি বৈশিষ্ট্য সহ আসে, সুতরাং যদি সমস্ত ব্যবহৃত হয় তবে এটি আরও যুক্তিসঙ্গত দাম হবে।


0

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

সি # এর একটি বাস্তবায়ন রয়েছে (http://msdn.microsoft.com/en-us/library/system.threading.countdownevent(VS.100).aspx)।

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

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

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