مهل الوكيل في curl: تحديد الخطوة التي فشلت
ميّز بين الاتصال بالوكيل والتفاوض على النفق وTLS وتوقف الاستجابة، كي تساعد إعدادات مهلة curl في تحديد المشكلة.
ابحث عن آخر عملية اكتملت في المخرجات التفصيلية لـ curl. عبارة «تم الاتصال بالوكيل، لكن لا توجد استجابة CONNECT» تحصر المشكلة أكثر بكثير من «انتهت مهلة الوكيل».
استخدم طلبًا بحدود زمنية، واستبدل المثال المحلي بوكيل HTTP الخاص بك؛ يمكن العثور على نقاط اتصال بديلة للمقارنة في قائمة وكلاء HTTP:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/يمنح --connect-timeout 5 إنشاء الاتصال ميزانية زمنية واحدة تشمل عمليات البحث والمصافحات المنطبقة؛ ولا يخصص خمس ثوانٍ لكل مرحلة. ويحد --max-time 15 مدة العملية كلها، بما فيها وقت النقل بعد إنشاء الاتصال.
| أين يتوقف التقدم | ما الذي ينبغي فحصه بعد ذلك |
|---|---|
| لا اتصال بالوكيل | حل اسم مضيف الوكيل، ومنفذ الاستماع، والتوجيه، وسياسة الجدار الناري. |
| تم الاتصال بالوكيل؛ لا استجابة للنفق | حمل الوكيل، والتفاوض على المصادقة، وسياسة الوصول، وإمكانية الوصول إلى الوجهة من الوكيل. |
| قُبل النفق؛ لم يكتمل TLS | إمكانية الوصول إلى الوجهة، والتفاوض على TLS، والاعتراض المُدار لحركة البيانات. |
| وصلت ترويسات الوجهة؛ توقف المتن | سلوك النقل لدى الخادم الأصلي، والتخزين المؤقت لدى الوسطاء، وما إذا كان التطبيق صامتًا عن قصد. |
لمعرفة ترتيب المصافحات، راجع كيف يحمل CONNECT حركة HTTPS. يشير التوقف قرب ميزانية الاتصال إلى مرحلة الإنشاء؛ ويشير التوقف لاحقًا عند الحد الإجمالي إلى نقل غير مكتمل. اجمع بين تسلسل العمليات وتوقيتها؛ فالتوقيت وحده لا يحدد المكوّن. تختلف صياغة السجلات بين إصدارات curl المجمّعة، والمنفذ TCP المفتوح لا يثبت أن CONNECT يعمل.
ثبّت أحد الجانبين
قارن الوجهة نفسها عبر مسار مباشر مسموح:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/ثم قارن وجهة أخرى غير ضارة عبر الوكيل نفسه. إذا فشلت وجهة واحدة فقط، فتحقق من مسارها أو سياسة الوصول إليها. وإذا توقفت كل الوجهات في خطوة الإنشاء نفسها، فتحقق من مسار الوكيل المشترك. احفظ وقت البدء ونقطة الاتصال والوجهة وآخر مرحلة مكتملة؛ وأزل بيانات الاعتماد والرموز وملفات تعريف الارتباط والأسماء الخاصة قبل مشاركة السجلات.
عندما يبقى الاتصال مفتوحًا دون تقدم مفيد
قد يحتاج نقل الملفات إلى حد للسرعة المنخفضة، إضافة إلى حدي الإنشاء والمدة الإجمالية:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 60 --speed-limit 100 --speed-time 20 https://example.com/يوقف هذا العملية إذا ظل معدل النقل المستمر أقل من 100 بايت في الثانية لمدة 20 ثانية، مع الإبقاء على حد إجمالي قدره 60 ثانية. اختر القيم وفقًا للحمل. قد يكون تدفق الأحداث سليمًا خلال فترات صمت طويلة، ولذلك قد توقفه قاعدة خاصة بالتنزيل خطأً.
زيادة جميع الحدود تؤجل ظهور العَرَض. وقد تضيف المحاولات المتكررة فورًا اتصالات إلى مسار مثقل بالفعل. شخّص باستخدام بضع مقارنات مدروسة؛ وأي سياسة لاحقة لإعادة المحاولة في التطبيق تحتاج إلى ميزانيتها الإجمالية الخاصة وإلى مراعاة أمان تكرار العملية.