আমি নিম্নলিখিত সেটআপটির কার্যকারিতা নির্ধারণ করতে লোড পরীক্ষার একটি সেট চালাচ্ছি:
Node.js test suite (client) --> StatsD (server) --> Graphite (server)
সংক্ষেপে, নোড.জেএস পরীক্ষার স্যুট প্রতি x সেকেন্ডে মেট্রিকের একটি সেট পরিমাণ স্ট্যাটসডি উদাহরণে প্রেরণ করে যা অন্য সার্ভারে অবস্থিত। স্ট্যাটসডি এর পরিবর্তে প্রতি সেকেন্ডে একই সার্ভারে অবস্থিত গ্রাফাইট উদাহরণে মেট্রিকগুলি ফ্লাশ করে। তারপরে আমি দেখছি যে পরীক্ষার স্যুট এবং গ্রাফাইটের মধ্যে প্যাকেট ক্ষতি নির্ধারণ করতে গ্রাফাইট কতটি মেট্রিক আসলে প্রেরণ করেছিল এবং কতজন গ্রাফাইট পেয়েছিল।
তবে আমি লক্ষ্য করেছি যে মাঝে মাঝে আমি খুব বড় প্যাকেট ড্রপ রেট পেয়েছি (নোট করুন এটি ইউডিপি প্রোটোকলের সাথে প্রেরণ করা হচ্ছে), 20-50% থেকে শুরু করে। সুতরাং যখন আমি এই প্যাকেটগুলি কোথায় ফেলে দেওয়া হচ্ছে তা সন্ধান করতে শুরু করেছিলাম, কারণ এটি স্ট্যাটসডি-র সাথে কিছু কার্য সম্পাদনের সমস্যা হতে পারে seeing এই ড্রপটি কোথায় ঘটেছে তা ট্র্যাক করার জন্য আমি সিস্টেমের প্রতিটি অংশে মেট্রিকগুলি লগ করা শুরু করি। এবং এখানেই জিনিসগুলি অদ্ভুত হয়ে যায়।
আমি ক্যাপচার ফাইল তৈরি করতে tcpdump ব্যবহার করছি যা পরীক্ষা চালানোর পরে আমি পরিদর্শন করি। কিন্তু যখনই আমি tcpdump চালিয়ে পরীক্ষা চালাই, প্যাকেটের ক্ষতি প্রায় অস্তিত্বহীন! দেখে মনে হচ্ছে tcpdump একরকমভাবে আমার পরীক্ষাগুলির পারফরম্যান্স বৃদ্ধি করছে এবং কেন এবং কীভাবে এটি ঘটে তা আমি বুঝতে পারি না। Tcpdump বার্তা সার্ভার এবং ক্লায়েন্ট উভয় লগ করতে আমি নিম্নলিখিত কমান্ডটি চালাচ্ছি:
tcpdump -i any -n port 8125 -w test.cap
একটি নির্দিষ্ট পরীক্ষার ক্ষেত্রে আমি 40000 মেট্রিক / গুলি পাঠাচ্ছি। Tcpdump চালানোর সময় পরীক্ষায় প্রায় 4% প্যাকেট ক্ষতি হয় এবং একটি ছাড়া প্যাকেটের প্রায় 20% ক্ষতি হয়
উভয় সিস্টেমই নিম্নলিখিত সেটআপ সহ জেন ভিএম হিসাবে চলছে:
- ইন্টেল শিওন ই 5-2630 ভি 2 @ 2.60GHz
- 2 জিবি র্যাম
- উবুন্টু 14.04 x86_64
আমি ইতিমধ্যে সম্ভাব্য কারণগুলির জন্য যা যা পরীক্ষা করেছি:
- ইউডিপি বাফার গ্রহণ / প্রেরণের আকার বাড়ানো।
- সিপিইউ লোড পরীক্ষাটি প্রভাবিত করছে। (ক্লায়েন্ট এবং সার্ভার উভয় দিকের সর্বোচ্চ 40-50% লোড)
- 'যে কোনও' এর পরিবর্তে নির্দিষ্ট ইন্টারফেসে tcpdump চলছে।
- প্রিসিসিউস মোডটি অক্ষম করতে '-p' দিয়ে টিসিপিডম্প চালানো হচ্ছে।
- কেবল সার্ভারে tcpdump চলছে। এর ফলে 20% প্যাকেট নষ্ট হয়ে গেছে এবং এটি পরীক্ষাগুলিতে কোনও প্রভাব ফেলবে না বলে মনে হচ্ছে।
- কেবল ক্লায়েন্টের উপর tcpdump চলছে। এর ফলে কর্মক্ষমতা বৃদ্ধি পেয়েছে।
- নেটদেব_ম্যাক্স_ব্লগ এবং নেটদেব_বাজেট 2 ^ 32-1 এ বাড়ানো হচ্ছে। এটি কোন পার্থক্য তৈরি।
- প্রতিটি নিকের উপর প্রমিসিউস মোডের প্রতিটি সম্ভাব্য সেটিং চেষ্টা করে (সার্ভার চালু এবং ক্লায়েন্ট বন্ধ, সার্ভার বন্ধ এবং ক্লায়েন্ট চালু, উভয় বন্ধ)। এটি কোন পার্থক্য তৈরি।
ifconfig eth0 promisc
সক্ষম ও ifconfig eth0 -promisc
অক্ষম করে। যদি এটি পার্থক্য করে, উভয় মেশিনে প্রম্পিস চালু / বন্ধের 4 টি সম্ভাব্য সংমিশ্রণের সাথে তুলনা করার চেষ্টা করুন। এটি সমস্যার উত্স চিহ্নিত করতে সহায়তা করতে পারে।
-p
করতে পারার বিকল্পটি আপনি পাস করতে চাইতে পারেন এটি কোনও পার্থক্য করে কিনা to