سؤال

كيف يمكن اختيار حجم المخزن المؤقت (البايتات التي أقرأ منها أو أكتب إلى مأخذ التوصيل) للحصول على الحد الأقصى من الإنتاجية عند تنفيذ نقل HTTP وFTP منخفض المستوى؟يجب أن ينقل تطبيقي البيانات باستخدام HTTP أو FTP على اتصالات تتراوح سرعتها من 130 كيلوبت في الثانية إلى 3 ميجابت في الثانية (أعرف السرعة المتوقعة مسبقًا).في بعض الأحيان يكون النقل في اتجاه واحد، وأحيانًا يكون في كلا الاتجاهين.هل يجب أن ألتزم بمتوسط ​​حجم المخزن المؤقت أم يجب أن أغيره حسب سرعة الاتصال؟

شكرًا.

هل كانت مفيدة؟

المحلول

أولاً، احصل على بعض القياسات.

بعد ذلك، بعد حصولك على قياس أداء موثوق به، قم بإجراء تغييرات على حجم المخزن المؤقت الخاص بك ورسم رسمًا بيانيًا للسرعة مقابل السرعة.حجم المخزن المؤقت.

نظرًا لأنك تعرف سرعات الاتصال مسبقًا، فمن المفترض أن تكون قادرًا على الحصول على بعض قياسات السرعات الفعلية بأحجام مخزن مؤقت فعلية مختلفة.

يعد نظام التشغيل ومكدس البروتوكولات والشبكة معقدًا للغاية بحيث لا يمكن التوصل إلى إجابة من المبادئ الأولى.تحتاج إلى القياس قبل أن تفعل أي شيء.

نصائح أخرى

اختر حجم المخزن المؤقت أكثر من 8 كيلو بايت.9000 هو عادةً أكبر حجم MTU (وحدة الإرسال القصوى) المستخدمة حتى في أسرع الشبكات.

عندما تستخدم مخزنًا مؤقتًا أكبر من وحدة الإرسال الكبرى للاتصال، سيقوم نظام التشغيل بتقسيمه إلى أجزاء بحجم وحدة الإرسال الكبرى حسب الحاجة، وبالتالي فإن أي شيء تستخدمه عبر وحدة الإرسال الكبرى سيكون له تأثير ضئيل على أداء الشبكة.

ومع ذلك، فإن استخدام مخزن مؤقت كبير من المحتمل أن يكون له تأثير آخر على الأداء، إذا كنت تقوم بنقل الملفات، فإن استخدام المخزن المؤقت الكبير قد يزيد من أداء القراءة، وبالتالي تحسين سرعة التطبيق الخاص بك.

لذا، عادةً ما يكون اختيار رقم دائري لطيف مثل 16 كيلو بايت فكرة جيدة.بالتأكيد لا تقل عن 1500، لأن هذا يمكن أن يؤثر سلبًا على أداء الشبكة (مما يتسبب في قيام نظام التشغيل أحيانًا بإرسال حزم صغيرة، مما يقلل الأداء على الشبكة).

يمكنك الحصول على حجم المخزن المؤقت:httpSocket.getReceiveBufferSize();أوصي بشدة بكتابة هذا المخزن المؤقت إلى ذاكرة الوصول العشوائي (RAM) أثناء عملية القراءة.على سبيل المثال:ByteArrayOutputStream MemoryFile.وفقط بعد ملء المخزن المؤقت كتابته على القرص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top