ছায়া নেটওয়ার্কের বিরুদ্ধে ট্র্যাফিক কীভাবে খেলবেন?


12

দুঃখিত যদি এটি একটি নতুন প্রশ্ন ...

নেটফ্লিক্স এবং টুইটার দুটি পৃথক অবকাঠামোর মধ্যে ওয়েব ট্র্যাফিকের সদৃশ করতে সক্ষম হওয়ার গল্প শুনেছি: একটি হ'ল অনুমোদিত / বিশ্বস্ত যা ব্যবহারকারীকে ফিরে যায়; এবং অন্যটি হল 'ছায়া' বা পরীক্ষার অবকাঠামো যা মনে করে যে এটি ব্যবহারকারীর কাছে ফিরে আসছে তবে তা নয়। মূল বিষয়টি হ'ল বাস্তব জীবনের লোড এবং সময়কালে গৌণ অবকাঠামো পরীক্ষা করা।

আমি নিশ্চিত যে এটি বর্ণনার জন্য একটি শব্দ আছে, তবে 'সেতু' সঠিক বলে মনে হচ্ছে না, 'রিপ্লে' করবে না।

এই কৌশলটি কী বলা হয় এবং / অথবা এটি সম্পাদন করতে কোন সরঞ্জামগুলি ব্যবহার করা যেতে পারে সে সম্পর্কে কেউ আমাকে সহায়তা করতে পারেন?

আমি অনুমান করি যে আমি যুক্ত করা উচিত যে আমি কৌশলগুলির সম্পর্কে শুনেছি যা কার্যকরভাবে 'লগগুলি পুনরায় খেলানো', তবে সত্যিকারের গতি / বিতরণে পাওয়া সত্যিই কঠিন।

এবং, আমরা আউটপুটটির 'নির্ভুলতা' যাচাই করার চেষ্টা করছি না, তবে কেবল এটি নিশ্চিত করুন যে আমরা নতুন অবকাঠামোতে ত্রুটি / স্ট্যাকট্রেস / ইত্যাদি দেখতে পাচ্ছি না।


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

@ ডারফকে: আপনি যদি রিমোট ক্লায়েন্টের টিসিপি / আইপি স্ট্যাকের অনুকরণের জন্য কোড লিখতে না যান তবে সাধারণ স্তর 2 বা 3 ক্যাপচার পুনরায় প্লে করা সমস্যাযুক্ত হবে। আপনি প্রচুর কোড না লিখতে চাইলে স্তর 7 এ ক্যাপচার করা আরও বেশি উপায়।
ইভান অ্যান্ডারসন

আমি মনে করি না এটি প্যাকেট-পর্যায়ে কার্যকর করা কঠিন। দয়া করে tcpcopy দেখুন ( github.com/wangbin579/tcpcopy )

উত্তর:


7

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

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

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

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

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


1

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

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


1

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

আপনি যে নিকটে আসতে পারেন তার সম্পর্কে আপনার মূল ছায়া সার্ভারে মূল সিঙ্ক্রোনাইজেশন প্যাকেটটি ফরোয়ার্ড করা হবে এবং তারপরে সেই বাক্সগুলির জন্য কিছু অ-অযৌক্তিক অবস্থান হিসাবে ডিফল্ট গেটওয়ে সেট করুন। তারপরে যে কোনও সময় কোনও ব্যবহারকারী কোনও সংযোগ স্থাপনের চেষ্টা করবে যাতে তারা আপনার প্রোড নেটওয়ার্কে একটি সত্যিকারের সার্ভার পেতে পারে এবং খুব কমপক্ষে আপনি ছায়া নেটওয়ার্কে একটি সিন প্যাকেট প্রেরণ করতে চান। ডার্ন, এখন আপনি কীভাবে আপনি এই কাজটি করতে পারেন তা ভাবছেন :)


1

আমি নেটফ্লিক্সের একটি বৈঠকে @ অ্যাড্রিয়ানককে এটি সম্পর্কে জিজ্ঞাসা করতে সক্ষম হয়েছি

উত্তরটি ছিল যে তারা তাদের নিজস্ব সরঞ্জাম লিখেছিলেন, যা মূলত একটি সার্লেটলেট ফিল্টার (দুঃখিত, জাভা-নির্দিষ্ট পরিভাষা) যা বর্তমান অনুরোধটি পুনরায় তৈরি করে এবং একটি টার্গেট সার্ভারে অ্যাসিঙ্ক্রোনাস ফায়ার-অ্যান্ড-ভুলে যাওয়া অনুরোধ করে।

সুবিধাগুলি হ'ল:

  • আপনার পরীক্ষার ("অন্ধকার") অবকাঠামোর বিরুদ্ধে 'রিয়েল ওয়ার্ল্ড' ট্র্যাফিকের নিদর্শন
  • রেকর্ড করার দরকার নেই এবং তারপরে পুনরায় খেলুন

অপূর্ণতা:

  • আপনার প্রোডাকশন বাক্সগুলিকে ছাড়ানোর জন্য থ্রেড / সিপিইউ চক্র থাকতে হবে
  • আপনার পরীক্ষার অবকাঠামোতে বিলম্বিতা আপনার উত্পাদন বাক্সগুলিকে ব্যাক আপ করতে এবং প্রভাবিত করতে পারে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.