আপনি কীভাবে প্যাকেটের ক্ষয় নির্ণয় করবেন?


27

আমি বুঝতে পারি যে এটি খুব সাবজেক্টিভ এবং বেশ কয়েকটি ভেরিয়েবলের উপর নির্ভরশীল, তবে আমি ভাবছি যে কোনও নির্দিষ্ট সিস্টেমে প্যাকেট ক্ষতির শনাক্তকরণের প্রয়োজন হলে বেশিরভাগ লোকেরা কী পদক্ষেপগুলি অতিক্রম করে?


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

আমি বুঝতে পারি এটি একটি খারাপ সমস্যার বিবরণ। একে খাঁটি একাডেমিক এবং অনুমান হিসাবে ভাবুন। ধরে নিন এটির প্যাকেট হ্রাস, বেশিরভাগ প্রকৌশলী কী পদক্ষেপ নেয় তা জানতে আগ্রহী।
কুশলপ

উত্তর:


29

আমি একটি নেটওয়ার্ক ইঞ্জিনিয়ার, সুতরাং আমি এটি আমার দৃষ্টিকোণ থেকে বর্ণনা করব।

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

যদি আমি লোকসান দেখতে পাই তবে এটি সাধারণত "পর্যাপ্ত ব্যান্ডউইথ" বা "সমস্যার সাথে সংযোগের" কোথাও কোথাও-এর মধ্যে রয়েছে, তাই নেটওয়ার্কের মধ্য দিয়ে রুটটি সন্ধান করুন এবং মাঝখান থেকে শুরু করুন, এটি আপনাকে সাধারণত একটি প্রান্ত বা অন্যটি দেয় gives

যদি আমি ক্ষতি দেখতে না পাই তবে পরবর্তী দুটি পদক্ষেপ "আরও পিংস প্রেরণ করুন" বা "বৃহত্তর পিংসগুলি প্রেরণ করুন" হতে থাকে। যদি এটি সাজান না তবে সমস্যাটি কীসের একটি ইঙ্গিত দেয়, শেষ পয়েন্টগুলির মধ্যে পুরো পথ ধরে QoS নীতি এবং ইন্টারফেসের পরিসংখ্যানগুলির দিকে নজর দেওয়া শুরু করার সময়।

যদি এটি কিছু না পায় তবে আপনার অনুমানগুলি নিয়ে প্রশ্ন শুরু করার সময় এসেছে, আপনি কি আসলে প্যাকেটের ক্ষতিতে ভুগছেন? এটি আবিষ্কারের একমাত্র নিশ্চিত উপায় হ'ল হোস্টগুলিতে ওয়্যারশার্ক (বা সমতুল্য) ব্যবহার করে অথবা নেটওয়ার্ক টেপের মাধ্যমে স্নিফার মেশিনগুলি (সম্ভবত ওয়্যারশার্ক বা অনুরূপ ব্যবহার করে) হুক করে both তারপরে আসে দুটি প্যাকেট ক্যাপচারের সাথে তুলনা করার মজা ...

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


+1 টি। গ্রাহক সমর্থন নেটওয়ার্ক ইঞ্জিনিয়ারকে বিযুক্ত করে আমি সাধারণত এই পথটি অনুসরণ করি।
পেট্রস

1
@ ভ্যাটাইন কিছু কোড উদাহরণ পেয়ে ভাল লাগবে যাতে কমান্ড ও বিকল্পগুলি সন্ধান না করে এটি অনুশীলন করতে সক্ষম হতে ...
ফিলিপ গ্যাচাউদ

11

লিনাক্স সিস্টেমের দৃষ্টিকোণে, আমি প্রথমে নেটওয়ার্ক ইন্টারফেসের সাথে প্যাকেট ক্ষতির সন্ধান করব ethtool -S ethX

বেশিরভাগ সময়, রিং বাফারটি বাড়িয়ে এটি ethtool -G ethX rx VALUEসমাধান করে।

কখনও কখনও বাধা ব্যালেন্স করে না কারণ সিস্টেমে অরকবুলান্স পরিষেবাটি অনুপস্থিত, সুতরাং chkconfig(EL) বা update-rc(ডেবুন্টু) দেখুন এই পরিষেবাটি চলছে কিনা তা দেখুন। আপনি বলতে পারেন যে বাধাগুলি ভারসাম্যহীন না হয় কারণ /proc/interruptsসমস্ত আইআরকিউ চ্যানেল কেবলমাত্র 0 কোর্স পরিবেশন করবে।

এটি ব্যর্থ হলে, আপনার net.core.netdev_max_backlogযদি সিস্টেমটি কয়েক গিগাবিট ট্র্যাফিকের চেয়ে বেশি পাস করে এবং সম্ভবত হতে পারে তবে আপনার বাড়ার প্রয়োজন হতে পারে net.core.netdev_budget

যদি এটি কাজ না করে, আপনি বিঘ্নিত coalescing মানগুলির সাথে সামঞ্জস্য করতে পারেন ethtool -C

যদি নেটওয়ার্ক ইন্টারফেসে কোনও প্যাকেট ড্রপ netstat -sনা থাকে, সকেট বাফারগুলিতে ড্রপ রয়েছে কিনা তা দেখুন এবং এটি " pruned from receive queue" এবং " dropped from out-of-order queue" এর মতো পরিসংখ্যানগুলির সাথে রিপোর্ট করা হবে ।

আপনি যথাযথ প্রোটোকলের জন্য ডিফল্ট এবং সর্বাধিক সকেট বাফার বাড়ানোর চেষ্টা করতে পারেন (যেমন: net.ipv4.tcp_rmemটিসিপির জন্য)।

যদি অ্যাপ্লিকেশনটির নিজস্ব সকেট বাফার আকার সেট করে, তবে অ্যাপ্লিকেশনটির জন্য কনফিগারেশন পরিবর্তনগুলির প্রয়োজন হতে পারে। যদি আপনার অ্যাপ্লিকেশনটিতে হার্ড-কোডড সকেট বাফার আকার রয়েছে, তবে আপনার অ্যাপ্লিকেশন বিক্রেতার কাছে অভিযোগ করুন।

ব্যক্তিগতভাবে আমি এনআইসিগুলিতে (চেকসামিং, সেগমেন্টেশন অফলোড, লার্জ রিসিভ অফলোড) প্রোটোকলকে অপছন্দ করি কারণ এটি এর চেয়ে বেশি ঝামেলার কারণ বলে মনে হচ্ছে। এই সেটিংস ব্যবহার করে চারপাশে খেলে ethtool -Kএকটি শট পাওয়া যায়।

আপনার এনআইসির ( modinfo <drivername>) জন্য মডিউল বিকল্পগুলি দেখুন কারণ আপনাকে কিছু বৈশিষ্ট্য পরিবর্তন করতে হতে পারে। একটি উদাহরণ দেওয়ার জন্য, আমি এমন একটি সিস্টেমে ইন্টেলের ফ্লো ডিরেক্টর ব্যবহার করে যা একটি বড় টিসিপি প্রবাহ পরিচালনা করে সেই প্রবাহের দক্ষতার ক্ষতি করতে পারে, সুতরাং এফডিআর বন্ধ করুন।

এর বাইরেও আপনি এই নির্দিষ্ট সিস্টেমটিকে তার নির্দিষ্ট কাজের চাপের জন্য হ্যান্ড টিউন করতে চলেছেন, যা আমার ধারণা আপনার প্রশ্নের ক্ষেত্রের বাইরে beyond


4

আমি প্যাকেট ক্যাপচারিং সরঞ্জাম যেমন: ওয়্যারশার্ক (উইন্ডোজে) এবং টিসিপিডম্প (লিনাক্স টার্মিনালে) ব্যবহার করে শুরু করব।

আমি ফায়ারওয়াল কনফিগারেশনও পরীক্ষা করব (হোস্ট ফায়ারওয়াল পাশাপাশি নেটওয়ার্ক ফায়ারওয়াল)।


3

বিচ্ছিন্ন করুন, তারপরে নির্মূল করুন।

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

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

আপনি কখনও কখনও প্যাকেট ডাম্প দেখে অনুমান করতে বা শর্টকাট নিতে পারেন (এটি সর্বদা বিটোরেন্ট)। এছাড়াও, আপনার প্রফেসর সার্ভারফল্ট বলুন দুর্দান্ত।


এটি "নির্মূল" এবং "এলিমিনেট" নয়।
অ্যান্ড্রু স্মিথ

0

পিংস প্যাকেট ক্ষতি না দেখাতে পারে যদি না আপনি বড় পিংস না প্রেরণ করেন! আমার নেটওয়ার্কে আমার প্যাকেটের ক্ষতি ছিল যা আমি আমার পিং প্যাকেটের আকারটি না বাড়ানো পর্যন্ত অদৃশ্য।

উইন্ডোজ জন্য:

ping -n 30 -l <largevalue> <target>

জন্য largevalueআমি 40960 ব্যবহৃত (40k প্যাকেট)

কারণ targetআমি প্রথম কয়েকটি আইপি ঠিকানা ব্যবহার করেছি usedtracert google.com

(যা ছিল আমার রাউটার এবং তারের মডেম)। চেইনটির আরও একটি ডিভাইসে বড় প্যাকেটের জন্য ভয়ানক প্যাকেট ক্ষয় (> 60%) তবে ছোট 0% ছিল। আমি এটিকে পুনরায় চালু করে ঠিক করেছি তবে এটি একটি কেবল বা অভ্যন্তরীণ কিছুও হতে পারে যার পরিবর্তে প্রয়োজন।

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