คำตอบด่วน
504 Gateway Timeout หมายความว่าอย่างไรกับพร็อกซี?
504 Gateway Timeout หมายความว่า gateway เช่น proxy หรือ CDN ของเว็บไซต์ รอเวลานานเกินไปสำหรับเซิร์ฟเวอร์ถัดไปแล้วยอมแพ้ ผ่าน residential proxy ของ CrawlRelay ช่องทางช้าโดยปกติคือเป้าหมายหรือการเชื่อมต่อบ้านของ exit ลองใหม่ครั้งเดียวด้วย exit ใหม่ ทำหน้าเว็บให้เบา และตั้ง timeout ในฝั่ง client เพื่อให้คำขอล้มด้วยความช้าในแบบที่คุณกำหนด
504 Gateway Timeout แบบสั้นๆ
| ข้อผิดพลาด | 504 Gateway Timeout |
|---|---|
| ประเภท | รหัสสถานะ HTTP (5xx, เซิร์ฟเวอร์ผิดพลาด) |
| ส่งโดย | gateway proxy หรือ CDN ที่อยู่หน้าเว็บไซต์เป้าหมาย |
| กำหนดไว้ใน | RFC 9110, section 15.6.5 |
| ลองใหม่อีกครั้งไหม? | ใช่ ครั้งหรือสองครั้งกับ exit ใหม่ |
| ตรวจสอบก่อน | จับเวลาคำขอเดียวกันโดยไม่ใช้ proxy |
504 Gateway Timeout หมายความว่าอย่างไร?
RFC 9110 กำหนด 504 เป็น gateway ที่ไม่ได้รับการตอบกลับทันเวลาจากเซิร์ฟเวอร์ต้นทางที่ต้องการ มันคือ timeout คู่กับ 502: 502 คือคำตอบไม่ดี, 504 คือไม่มีคำตอบทันเวลา
proxy แบบ residential เพิ่มชั้นทางผ่านที่คำขอตรงไม่มี คือทราฟฟิกของคุณไปที่ gateway แล้วไปยังการเชื่อมต่อบ้าน จากนั้นไปยังเว็บไซต์แต่ละชั้นเพิ่มความล่าช้า โดยช้าที่สุดเป็นตัวตัดสินเวลาโดยรวม
a 504 เป็นอย่างไรใน Python, curl, Node.js และเบราว์เซอร์?
ข้อผิดพลาดเดียวกันนี้แสดงผลแตกต่างกันในแต่ละเครื่องมือ นี่คือข้อความที่ต้องค้นหาในบันทึกของคุณ:
- Python requests:
status_code == 504หรือTunnel connection failed: 504 Gateway Timeoutสำหรับเป้าหมาย HTTPS - curl:
curl: (56) CONNECT tunnel failed, response 504 - Scrapy: ลองใหม่โดยอัตโนมัติ (504 อยู่ใน
RETRY_HTTP_CODES) - เว็บไซต์ที่ใช้ CDN: หน้า error จาก CDN พร้อมสถานะ 504
อะไรเป็นสาเหตุของ a 504?
โอกาสสูงสุดอันดับแรก:
- เป้าหมายช้า เช่น หน้า search ที่ใช้เวลาหลายวินาที
- exit ช้า เช่น การเชื่อมต่อบ้านอ่อนหรือเครือข่ายมือถือหนาแน่น
- ตอบกลับขนาดใหญ่ ที่ใช้เวลานานกว่าความอดทนของ gateway
- ต้นทางของเว็บไซต์เอง ที่ timeout หลัง CDN แล้วแสดง 504
ฉันวินิจฉัย a 504 ทีละขั้นตอนอย่างไร?
- จับเวลาคำขอโดยไม่ใช้ proxy ถ้าช้าที่บ้านเป้าหมายก็ช้า
- ลองใหม่ด้วย exit ใหม่และเปรียบเทียบเวลา
- ตรวจสอบขนาดตอบกลับ: หน้า 5 MB กับ 50 KB เป็นปัญหาคนละแบบ
- อ่านเนื้อหาเพื่อดูว่า error page มาจาก CDN หรือ proxy
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URLฉันจะแก้ไข a 504 อย่างไร?
- ตั้งเวลา timeout ชัดเจน: ประมาณ 10 วินาทีสำหรับการเชื่อมต่อ และ 30-60 วินาทีสำหรับการอ่านหน้า
- ลองใหม่ด้วย exit ใหม่ ครั้งหรือสองครั้ง
- ดึงข้อมูลน้อยลง เช่น ข้ามรูปหรือสื่อต่าง ๆ ถ้าต้องการแค่ HTML หรือ JSON API
- วางแผนโหลดหนัก ในช่วงเวลาที่ไม่ใช่ชั่วโมงเร่งด่วนสำหรับประเทศเป้าหมาย
import httpx
proxy = "http://USERNAME:[email protected]:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)
with httpx.Client(proxy=proxy, timeout=timeout) as client:
try:
r = client.get("https://api.ipify.org")
print(r.status_code, r.text)
except httpx.TimeoutException as exc:
print("timed out:", type(exc).__name__) # ConnectTimeout, ReadTimeout...ฉันควรลองใหม่หลังจาก a 504 ไหม?
ลองรีทรูปแบบ 504 สักหนึ่งหรือสองครั้งในครั้งแรกที่ออก โดยมีระยะเวลารอสั้น ๆ ถ้า URL เดิมหมดเวลาหลายครั้งในหลายจุดออก แสดงว่าเป้าหมายช้า หรือโหลดเกินความสามารถ: ลดอัตราของคุณบนโฮสต์นั้น หรือ ลองใหม่ภายหลัง การเพิ่มเวลารอของไคลเอนต์ช่วยได้ก็ต่อเมื่อเวลารอเกตเวย์ไม่ใช่ข้อจำกัด
504 Gateway Timeout มีผลอย่างไรกับ CrawlRelay?
การเชื่อมต่อใหม่แต่ละครั้งกับ CrawlRelay ที่ไม่มี session ID มักจะได้จุดออกแบบที่อยู่อาศัยที่ต่างกัน ดังนั้นการรีทรูปแบบจึงทดสอบการเชื่อมต่อบ้านใบใหม่ สำหรับเป้าหมายช้า ให้ payload เล็กและวัดเวลาถึงไบต์แรกแยกจากเวลาดาวน์โหลดทั้งหมด
เกตเวย์: gw.crawlrelay.com, พอร์ต 7777 (HTTP, HTTPS ผ่าน CONNECT) และพอร์ต 7778 (SOCKS5). รูปแบบชื่อผู้ใช้: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. ที่เกี่ยวข้อง: 502 Bad Gateway · Read timed out · 503 Service Unavailable.
504 Gateway Timeout: คำถามที่นักพัฒนาถาม
ความแตกต่างระหว่าง 502 กับ 504 คืออะไร?
ทั้งสองมาจากเกตเวย์ 502 หมายความว่าเซิร์ฟเวอร์เบื้องหลังส่งการตอบกลับไม่ถูกต้องหรือหลุดการเชื่อมต่อ 504 หมายความว่าไม่ได้ส่งอะไรมาในเวลาที่กำหนด สำหรับ residential proxy 502 มักหมายถึงจุดออกที่หลุด ส่วน 504 คือเป้าหมายช้าหรือการเชื่อมต่อบ้านช้า
ฉันจะเพิ่มเวลารอของ proxy ได้ไหม?
คุณควบคุมเวลารอไคลเอนต์ได้เอง ไม่ใช่เวลารอภายในของเกตเวย์ กำหนดเวลารอเชื่อมต่อและอ่านอย่างชัดเจน เพื่อให้คำร้องขอช้าเกิดข้อผิดพลาดทำนายได้ รีทรูปแบบที่จุดออกใหม่ และทำหน้าเว็บให้เบาลง ถ้าเป้าหมายต้องการเวลาตอบกลับนาน ให้ดึง API ของมันหรือหน้าที่เบากว่าแทน
proxy มือถือช้ากว่า proxy แบบบ้านหรือไม่?
เป็นได้ เพราะจุดออกมือถือแชร์เครือข่ายกับผู้ใช้รายอื่น ความเร็วเปลี่ยนตามสัญญาณและโหลด ใช้ IP มือถือสำหรับเป้าหมายที่ต้องการ และ IP ที่อยู่อาศัยสำหรับการเก็บข้อมูลจำนวนมาก วัดเวลาตอบสนองของคุณตามประเภทจุดออกก่อนตัดสินใจ
ข้อผิดพลาดพร็อกซีอื่นๆ ในเอกสารอ้างอิงนี้
รหัสสถานะ HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
ข้อผิดพลาดของเบราว์เซอร์และไคลเอนต์
ข้อผิดพลาดการเชื่อมต่อและ TLS
พร็อกซีเรซิเดนเชียลที่มีเอกสารอธิบายกรณีล้มเหลว
พร็อกซีเรซิเดนเชียล CrawlRelay จาก US$0.50/GB, ปริมาณข้อมูลที่ไม่หมดอายุ