আমার সার্ভারে একটি বড় ফাইল রয়েছে। আমি দেখতে পেয়েছি যে মাল্টি থ্রেড ডাউনলোড 20 এমবিএস পেতে পারে তবে একক থ্রেড 10 এমবিপিএস পেতে পারে, কেউ কি এটি ব্যাখ্যা করতে পারেন?
আমার সার্ভারে একটি বড় ফাইল রয়েছে। আমি দেখতে পেয়েছি যে মাল্টি থ্রেড ডাউনলোড 20 এমবিএস পেতে পারে তবে একক থ্রেড 10 এমবিপিএস পেতে পারে, কেউ কি এটি ব্যাখ্যা করতে পারেন?
উত্তর:
সাধারণত এটি কারণ আপনার এবং অন্য সার্ভারের মধ্যে কোথাও কোনও ফায়ারওয়াল প্রতিটি এইচটিটিপি প্রবাহকে 10 এমবিপিএসের মধ্যে সীমাবদ্ধ করে। আপনি যখন মাল্টি-থ্রেড ব্যবহার করেন, আপনি 2x 10 এমবি পাবেন (প্রতিটি থ্রেডের জন্য একটি)।
এটি আপনার এবং সার্ভারের মধ্যে আপনার পিং এবং আপনার ডাউনলোডিং সফ্টওয়্যার দ্বারা ব্যবহৃত প্যাকেটের আকার / টিসিপিপ উইন্ডো আকারের কারণে ঘটে।
মূলত, আপনার যদি সার্ভারে 100 মিমি পিং থাকে এবং 100kb এর প্যাকেটগুলির জন্য অনুরোধ করা হয় তবে আপনার ইন্টারনেটের গতি অসীম হলেও, আপনি কেবল 1 সংযোগ ব্যবহার করে প্রতি সেকেন্ডে 10 প্যাকেট পেতে পারেন।
আপনি "পাইপ পূর্ণ" রাখলে টিসিপি সবচেয়ে ভাল কাজ করে - প্রেরক অ্যাপ্লিকেশন যখন প্রেরককে টিসিপি স্ট্যাক ক্রমাগত ডেটা সরবরাহ করে রাখার জন্য যথেষ্ট পরিমাণে বাফার পাঠায় তখন এটি নেটওয়ার্কে সর্বদা "ফ্লাইটে" থাকতে পারে এবং যখন রিসিভার থাকে অ্যাপ্লিকেশনটি রিসিভার টিসিপি স্ট্যাক থেকে দ্রুত পাঠ করে রাখে যে রিসিভার টিসিপি উইন্ডোটি কখনই পূরণ করে না (আবার, সুতরাং প্রেরণকারী টিসিপি স্ট্যাকটি সর্বদা নেটওয়ার্কে ডেটা "ফ্লাইটে" রাখতে পারে)।
আমি কল্পনা করতে পারি যে দুর্বল-লিখিত একক থ্রেডেড প্রেরক অ্যাপ্লিকেশনটি টিসিপি স্ট্যাকের কাছে একটি বাফারকে পাস করে, এটি পুরোপুরি আদায় করা হয়েছে শুনে শোনার জন্য অপেক্ষা করে এবং অন্য একটি বাফারকে পাস করে। এর অর্থ হ'ল একবার নেটওয়ার্কে প্রথম বাফারটির শেষে "ফ্লাইটে" পৌঁছে যাওয়ার পরে প্রেরণকারী টিসিপি স্ট্যাকটি প্রেরণের জন্য অনাহারে থাকে, যার অর্থ পাইপ নিকাশী থাকে এবং এ্যাক ফিরে না আসা এবং প্রেরণকারী অ্যাপ্লিকেশন না হওয়া পর্যন্ত পুনরায় পূরণ করা হয় না এটি একটি নতুন বাফার পাস।
আমি কলুষিতভাবে লিখিত একক থ্রেডযুক্ত রিসিভার অ্যাপটি কল্পনাও করতে পারি যা প্রাপ্তি টিসিপি স্ট্যাক থেকে দ্রুত পড়েনা এবং এটি টিসিপি স্ট্যাকের বাফারগুলিকে পূরণ করতে দেয়, যার অর্থ টিসিপি উইন্ডো ভরে যায়, যার ফলে প্রেরণকারী টিসিপি স্ট্যাকের কারণ হয়ে যায় উইন্ডো কিছু না খোলা পর্যন্ত প্রেরণ বন্ধ করুন। রিসিভারের টিসিপি উইন্ডো আকার বাড়ানো কিছুটা সহায়তা করতে পারে, তবে এই প্রান্তে আসল সমাধানটি দ্রুত ডেটা পড়া।
ঠিক আছে, এটি সম্ভবত কারণ আপনি কেবলমাত্র একটি সংযোগের মাধ্যমে এত বেশি ডেটা স্থানান্তর করতে পারেন। তবে একাধিক-থ্রেড প্রোগ্রামে আপনার কাছে একই সাথে দুটি সংযোগের ডেটা প্রাপ্ত হতে পারে এবং আপনি যে পরিমাণ তথ্য পেতে পারেন তার দ্বিগুণ করতে পারেন। এর কিছু সীমাবদ্ধতা রয়েছে উদাহরণস্বরূপ আপনি যে সার্ভারটি ডাউনলোড করছেন তার গতি ... হ্যাটস অফ দু'জন যে মাল্টি-থ্রেড ডাউনলোডার লিখেছেন, সেগুলি লেখা সহজ নয়।