كل المواقع نشطة · uptime 99.99%
البروتوكولات

Keep-Alive وتجميع الاتصالات في البروكسي

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

التكلفة الحقيقية لإنشاء الاتصال

شكلمراحل الاتصال الأول عبر البروكسي
الإعداد01DNSالاستبيان~20 msعنوان البروكسيلأجل02مصافحة TCP~35 msالعميل ↔ البروكسي03هوية البروكسي~35 ms407 ← إعادةإرسال04CONNECTنفق~35 msفتح النفق05مصافحة TLS~70 msالعميل ↔ الهدف06الطلب الأولمتغيّرالبيانات الفعليةإجمالي تكلفة ثابتة ~200 ms

هذه الـ200 ms تُدفع من جديد مع كل اتصال جديد. فإن كنت ترسل 1,000 طلب وتفتح اتصالًا جديدًا في كل مرة، فستنفق 200 ثانية على الإعداد وحده.

كيف يعمل Keep-Alive؟

في HTTP/1.1 تكون الاتصالات دائمة افتراضيًا: فبعد وصول الاستجابة لا يُغلق الاتصال، ويُرسل الطلب التالي عبر المقبس نفسه. وهناك ثلاثة أشياء تُفسد هذا السلوك:

  • الخادم Connection: close يرسل — يُغلق الاتصال.
  • ينشئ العميل كائن جلسة جديدًا مع كل طلب — فلا يعمل التجمّع إطلاقًا.
  • تتجاوز مدة الخمول الحد — فيُسقِط البروكسي أو الخادم الاتصال.
الخطأ الأكثر شيوعًا

إنشاء كائن Session, Client أو Agent جديد لكل طلب في الكود. وهذا يعطّل إعادة استخدام الاتصال تمامًا مهما كان إعداد التجمّع لديك.

الإعداد الصحيح

شكلإعادة استخدام الاتصال
إعداد التجمّع بحسب اللغة01# Python requests — Session bir kez oluşturulur02import requests03session = requests.Session()04session.proxies = {"https": "http://kullanici:sifre@proxy.example.com:8080"}05adapter = requests.adapters.HTTPAdapter(pool_connections=16, pool_maxsize=16)06session.mount("https://", adapter)07for url in urls:08 r = session.get(url, timeout=25) # aynı bağlantı yeniden kullanılır0910# Python httpx — limitleri açıkça verin11import httpx12limits = httpx.Limits(max_connections=16, max_keepalive_connections=16,13 keepalive_expiry=60.0)14client = httpx.Client(limits=limits, proxy=PROXY, timeout=25.0)1516# Node.js undici17import { Agent, setGlobalDispatcher } from "undici";18setGlobalDispatcher(new Agent({ connections: 16, keepAliveTimeout: 60_000 }));

أبقِ حجم التجمّع أدنى قليلًا من حد التزامن لدى مزوّدك. فإن تجاوزته، تُنشأ اتصالات إضافية ثم تُغلق فورًا.

كم يبلغ المكسب؟

شكلالزمن الإجمالي لـ1,000 طلب
القياس061122183244بدون تجمّع (اتصال جديد)مع تجمّع (keep-alive)1002505007501000

في القياس المثال، يخفض استخدام التجمّع الزمن الإجمالي إلى نحو الثلث. ويزداد المكسب كلما ارتفع زمن الاستجابة إلى البروكسي.

إعادة استخدام جلسة TLS

إلى جانب تجميع الاتصالات هناك مصدر كسب ثانٍ: تذكرة جلسة TLS. فعند إعادة الاتصال بالهدف نفسه يمكن تنفيذ مصافحة مختصرة بدلًا من المصافحة الكاملة. ومعظم العملاء الحديثين يفعلون ذلك تلقائيًا؛ المهم هو إعادة استخدام كائن العميل.

شكلالمصافحة الكاملة والمختصرة في TLS
TLSالمصافحة الكاملةإعادة استخدام الجلسةعدد الجولات2 RTT1 RTTنقل الشهادةمتوفرلا يوجدحساب المفتاحكاملمختصرةالزمن النموذجي70–140 ms30–60 msالشرطالاتصال الأولكائن العميل نفسه

إذا أعدت إنشاء كائن العميل مع كل طلب فستُفقد تذكرة الجلسة وتُنفَّذ مصافحة كاملة في كل مرة.

توازن مدة الخمول

إبقاء الاتصال مفتوحًا لمدة طويلة جدًا قد يسبب مشكلة أيضًا: فقد يُسقط البروكسي أو الخادم الهدف الاتصال بصمت ولا يلاحظ عميلك ذلك إلا في الطلب التالي. وهذا يؤدي إلى نمط "الطلب الأول يفشل والثاني ينجح".

الإعدادالمقترحالسبب
keepalive_expiry30–60 ثانيةينبغي أن يكون أقصر من مهلة الخادم
حجم التجمّعدون حد التزامنالزائد مصافحة مهدورة
إعادة المحاولةمرة واحدةتعوّض الاتصال الساقط
حد عمر الاتصال5–10 دقائقالاتصالات الطويلة العمر تصبح بائتة
توصية عملية

أبقِ مدة الخمول من مهلة الخادم أقصر . وبذلك تكون أنت من يغلق الاتصال، فلا تنشأ حالة "الخادم أغلق وأنا لا أعلم".

التعارض مع التدوير

تتعارض إعادة استخدام الاتصال مع تدوير IP بطبيعتها: فاستخدام الاتصال نفسه يعني البقاء على عنوان IP الخروج نفسه. وهذه ليست مشكلة، بل مسألة اختيار:

شكلتجمّع أم تدوير؟
قرارهل البقاء على عنوان IP نفسه مشكلة؟لا، الجلسة مطلوبةنعماضبط التجمّع على الحد الأقصى…لاانظر أدناهمكسب السرعة هو الأعلىجزئيًا — قد يبقى عنوان IP نفسه لفترةنعمتجمّع + تجديد دوري…لاانظر أدناهنقطة التوازننعم، يلزم عنوان IP مختلف مع كل طلبنعمأغلق التجمّعلااقبل تكلفة السرعة…

في معظم السيناريوهات يكون الخيار الثاني هو الصحيح: أعد استخدام الاتصال لفترة (30 طلبًا أو 5 دقائق مثلًا)، ثم جدّده.

لأجل استراتيجيات التدوير إلى مقالنا عن إعدادات التدوير يمكنك الاطّلاع.

الخلاصة

يمثل keep-alive وتجميع الاتصالات أكبر رافعة منفردة في أداء البروكسي. أنشئ كائن العميل مرة واحدة وأعد استخدامه، وأبقِ حجم التجمّع دون حد المزوّد، واضبط مدة الخمول لتكون أقصر من مهلة الخادم، وأضف محاولة إعادة واحدة. وإذا كانت هناك حاجة إلى التدوير ففضّل التجديد الدوري بدلًا من إغلاق التجمّع. وللقياس اختبار ping و فحص البروكسي يمكنك استخدام أدواتنا.

الأسئلة الشائعة

01هل يعمل keep-alive عبر البروكسي؟

نعم. بعد إنشاء نفق CONNECT يمكنك تمرير عدة طلبات عبر النفق نفسه. كما أن الاتصال الدائم مدعوم في بروكسي HTTP العادي أيضًا.

02كيف ينبغي أن أختار حجم التجمّع؟

أبقِه أدنى قليلًا من حد التزامن لدى مزوّدك. فإن تجاوزته، تُنشأ اتصالات إضافية ثم تُغلق فورًا وتضيع تكلفة المصافحة هدرًا.

03الطلب الأول يفشل والطلبات التالية تعمل — لماذا؟

قد يكون الاتصال الموجود في التجمّع أُغلق بصمت من جانب الخادم. أبقِ مدة الخمول أقصر من مهلة الخادم وأضف محاولة إعادة واحدة.

04هل يمنع تجميع الاتصالات تدوير عناوين IP؟

نعم، فالاتصال نفسه يبقى على عنوان IP الخروج نفسه. إذا كنت بحاجة إلى التدوير فبدلًا من إغلاق التجمّع تمامًا، جدّد الاتصال بعد عدد محدد من الطلبات أو بعد مدة محددة.

05ماذا تكسب إعادة استخدام جلسة TLS؟

تُنفَّذ مصافحة مختصرة بدلًا من المصافحة الكاملة؛ وهي توفّر عادةً جولة واحدة و40–80 ms. ويكفي أن تعيد استخدام كائن العميل.

المقالات والصفحات ذات الصلة

الخطوة التالية

عزّز بنية البروكسي لديك اليوم.

ابدأ خلال دقائق مع الباقات المدفوعة، أو جرّب أولاً قائمة البروكسي المجاني لدينا.

FREEPROXY.TR

إن كنت تبحث عن بروكسي مجاني فأنت في المكان الصحيح

منصة بروكسي شاملة تتيح لك عرض عناوين البروكسي المجانية المحدّثة، ومقارنة نوعَي بروكسي HTTP وSOCKS، وفحص اتصالات البروكسي بأدوات مجانية.