Trả lời nhanh
504 Gateway Timeout nghĩa là gì với proxy?
504 Gateway Timeout có nghĩa gateway như proxy hoặc CDN của trang đợi máy chủ tiếp theo quá lâu và từ bỏ. Qua proxy residential CrawlRelay, liên kết chậm thường là trang mục tiêu hoặc kết nối home của exit. Thử lại một lần qua exit mới, giữ trang nhẹ, và cài timeout cho client để yêu cầu chậm bị hủy theo ý bạn.
504 Gateway Timeout nhìn nhanh
| Lỗi | 504 Gateway Timeout |
|---|---|
| Loại | Mã trạng thái HTTP (5xx, lỗi máy chủ) |
| Gửi bởi | Proxy gateway hoặc CDN đứng trước trang mục tiêu |
| Định nghĩa tại | RFC 9110, section 15.6.5 |
| Thử lại? | Có, một hoặc hai lần trên một exit mới |
| Kiểm tra trước tiên | Thời gian cùng yêu cầu không qua proxy |
504 Gateway Timeout nghĩa là gì?
RFC 9110 định nghĩa 504 là gateway không nhận được phản hồi kịp thời từ máy chủ upstream cần thiết. Đây là lỗi timeout tương đồng với 502: 502 nghĩa là phản hồi sai, 504 nghĩa là không có phản hồi đúng giờ.
Proxy residential thêm một bước trung gian mà yêu cầu trực tiếp không có: lưu lượng đi tới gateway, rồi tới kết nối nhà, rồi tới trang. Mỗi bước thêm chậm trễ, bước chậm nhất quyết định tổng thời gian.
a 504 trông như thế nào trong Python, curl, Node.js và trình duyệt?
Cùng một lỗi nhưng hiển thị khác nhau trên mỗi công cụ. Đây là các thông báo bạn nên tìm trong nhật ký của mình:
- Python requests:
status_code == 504, hoặcTunnel connection failed: 504 Gateway Timeoutcho HTTPS - curl:
curl: (56) CONNECT tunnel failed, response 504 - Scrapy: thử lại tự động (504 ở
RETRY_HTTP_CODES) - Trang CDN: trang lỗi từ CDN trạng thái 504
Nguyên nhân gây ra a 504 là gì?
Khả năng đầu tiên là:
- Trang mục tiêu chậm, ví dụ trang tìm kiếm mất vài giây để tải.
- Exit chậm, như kết nối nhà yếu hoặc tế bào di động đông.
- Phản hồi lớn mất thời gian lâu hơn thời gian chờ của gateway.
- Nguồn gốc trang thời gian hết hạn phía sau CDN, CDN trả 504.
Làm sao để chẩn đoán a 504 từng bước?
- Thời gian yêu cầu không dùng proxy. Nếu cũng chậm ở nhà, trang chậm.
- Thử lại qua exit mới và so sánh thời gian.
- Kiểm tra kích thước phản hồi: trang 5 MB khác trang 50 KB.
- Đọc nội dung xem trang lỗi do CDN hay proxy tạo.
# 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_URLLàm sao để sửa a 504?
- Đặt timeout rõ ràng: khoảng 10 giây để kết nối và 30-60 giây để đọc trang thường.
- Thử lại một hoặc hai lần qua exit mới.
- Yêu cầu ít hơn: bỏ qua hình ảnh và media nếu bạn chỉ cần HTML hoặc JSON API.
- Lên lịch tải trang nặng vào giờ thấp điểm của quốc gia mục tiêu.
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...Có nên thử lại sau a 504 không?
Thử lại lỗi 504 một hoặc hai lần trên một exit mới, với thời gian chờ ngắn. Nếu cùng một URL bị timeout qua nhiều exit, mục tiêu đang chậm hoặc quá tải: giảm tốc độ trên host đó hoặc thử lại sau. Tăng thời gian chờ của client chỉ có tác dụng nếu timeout của gateway không phải là giới hạn.
504 Gateway Timeout áp dụng thế nào với CrawlRelay?
Mỗi kết nối mới tới CrawlRelay không có session ID thường sẽ dùng một residential exit khác, nên thử lại thường kiểm tra kết nối home khác. Với mục tiêu chậm, giữ payload nhỏ và đo thời gian nhận byte đầu tiên riêng biệt với tổng thời gian tải.
Gateway: gw.crawlrelay.com, cổng 7777 (HTTP, HTTPS qua CONNECT) và cổng 7778 (SOCKS5). Định dạng tên người dùng: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Tham khảo liên quan: 502 Bad Gateway · Read timed out · 503 Service Unavailable.
504 Gateway Timeout: các câu hỏi thường gặp của lập trình viên
Sự khác biệt giữa 502 và 504 là gì?
Cả hai đều đi qua một gateway. 502 nghĩa là server phía sau gửi phản hồi không hợp lệ hoặc ngắt kết nối. 504 nghĩa là không gửi gì kịp thời gian. Với residential proxy, 502 thường là exit bị rớt, và 504 là do mục tiêu hoặc kết nối home chậm.
Tôi có thể tăng timeout của proxy không?
Bạn kiểm soát thời gian chờ của client, không phải timeout nội bộ của gateway. Thiết lập rõ ràng timeout kết nối và đọc sao cho các request chậm thất bại có thể đoán trước, thử lại trên exit mới, và làm trang nhẹ hơn. Nếu mục tiêu cần phản hồi rất lâu, hãy lấy API hoặc trang nhẹ hơn.
Proxy di động có chậm hơn proxy residential không?
Có thể có, vì exit di động dùng chung cell với nhiều người khác và tốc độ thay đổi theo sóng và tải. Dùng IP di động cho mục tiêu cần và IP residential cho việc crawl hàng loạt. Đo thời gian phản hồi riêng theo loại exit trước khi quyết định.
Các lỗi proxy khác trong tài liệu tham khảo này
Mã trạng thái HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Lỗi trình duyệt và client
Lỗi kết nối và TLS
Proxy dân cư với tài liệu bao gồm các trường hợp lỗi
CrawlRelay proxy dân cư từ 0,50 US$/GB, lưu lượng không bao giờ hết hạn.