พร็อกซีหมดเวลาใน 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 วินาที เลือกค่าตามลักษณะงาน สตรีมเหตุการณ์อาจปกติแม้เงียบนาน กฎสำหรับดาวน์โหลดจึงอาจตัดสตรีมนั้นผิดพลาด
การเพิ่มทุกเพดานเพียงเลื่อนเวลาที่อาการปรากฏ การลองซ้ำทันทีหลายครั้งอาจเพิ่มการเชื่อมต่อให้เส้นทางที่รับภาระเกินอยู่แล้ว วินิจฉัยด้วยการเปรียบเทียบอย่างมีเป้าหมายไม่กี่ครั้ง นโยบายลองซ้ำของแอปในภายหลังต้องมีกรอบเวลารวมของตนเองและพิจารณาว่าทำงานเดิมซ้ำได้อย่างปลอดภัยหรือไม่