Tại sao wget treo?


12

đi đến một url cụ thể từ một trong các máy chủ của tôi liên tục bị hết giờ. Tất cả các url khác từ hộp này hoạt động tốt. Url này hoạt động tốt từ bất kỳ hộp nào khác tôi có. Đây là đầu ra:

wget -T 10 http://www.fcc-fac.ca
--2011-07-14 14:44:29--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... failed: Connection timed out.
Connecting to www.fcc-fac.ca|207.195.108.140|:80... failed: Connection timed out

Bạn có thể cho tôi biết những gì có thể sai và làm thế nào tôi có thể khắc phục nó? Tôi đang sử dụng Ubuntu 11.04 (GNU / Linux 2.6,38-8-server x86_64)

Cảm ơn bạn rất nhiều trước và tha thứ cho sự thiếu hiểu biết của tôi :)

ping, telnet, nc www.fcc-fac.ca 80 - tất cả đều bị treo. Tuy nhiên, một số url khác có thể dễ dàng quên mặc dù chỉ một số máy chủ của chúng có thể ping được.

traceroute không cho tôi biết nhiều:

7  rx0nr-access-communications.wp.bigpipeinc.com (66.244.208.10)  148.834 ms  149.018 ms  148.940 ms
8  sw-1-research.accesscomm.ca (24.72.3.9)  158.901 ms  159.805 ms  160.162 ms
9  65.87.238.126 (65.87.238.126)  150.069 ms  148.861 ms  148.846 ms
10  * * *
...
30  * * *

Cảm ơn rất nhiều cho câu trả lời!

Câu trả lời:


14

Tôi nghĩ rằng vấn đề là wget không xử lý tốt các địa chỉ IPv6 và máy chủ DNS đang gửi IPv6 cho trang web đó. Xin lỗi nếu tôi hiểu nhầm câu hỏi của bạn. Kiểm tra các bài kiểm tra:

hmontoliu@ulises:~$ wget -T10 http://www.fcc-fac.ca
--2011-07-14 16:44:34--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: Connection timed out.
wget: unable to resolve host address `www.fcc-fac.ca'

Nếu tôi buộc IPv6 vì tôi tin rằng vấn đề của bạn liên quan đến nó, thì nó đã thất bại:

hmontoliu@ulises:~$ wget -6 http://www.fcc-fac.ca
--2011-07-14 16:40:44--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: No address associated with hostname.
wget: unable to resolve host address `www.fcc-fac.ca'

Tuy nhiên, nếu tôi buộc phải sử dụng IPv4, nó sẽ tải xuống ngay trang chỉ mục

hmontoliu@ulises:~$ wget -4 http://www.fcc-fac.ca
--2011-07-14 16:40:56--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6554 (6,4K) [text/html]
Saving to: `index.html'

Anh ta giải quyết nó tốt với một địa chỉ IPv4.
Jodie C

Một ví dụ khác về lý do tại sao tôi không thích IPv6: - /
PJ Brunet

1

Chạy nc www.fcc-fac.ca 80, nhập GET /và nhấn Enter hai lần.

Tầm nhìn từ xa có thể bị giảm hoặc chặn bạn.


Xin chào, cảm ơn vì câu trả lời - Tôi đã cập nhật câu hỏi ban đầu
Szczepan

Nếu bạn không thể netcat đến địa chỉ thì có lẽ bạn đang bị chặn ở đâu đó trên đường đi.
Jodie C

1

Dường như wget không thể kết nối với ip của bạn trên cổng 80.

kiểm tra xem máy chủ của bạn có thể ping được không:

ping 65.87.238.35
ping 207.195.108.140

nếu ip có thể ping được, hãy kiểm tra xem bạn có thể kết nối với cổng 80 bằng telnet không:

điện thoại 65.87.238,35 80

nếu máy chủ không phản hồi ping, có thể nó không hoạt động hoặc không truy cập được vào mạng nguồn của bạn.

kiểm tra với công cụ traceroute để xem nơi kết nối thất bại.


Xin chào, cảm ơn vì câu trả lời - Tôi đã cập nhật câu hỏi ban đầu
Szczepan

một đào trên www.fcc-fac.ca cho tôi biết rằng nó có 2 bản ghi DNS loại A: ;; TRẢ LỜI TRẢ LỜI: www.fcc-fac.ca. 120 TRONG MỘT 65.87.238,35 www.fcc-fac.ca. 120 IN A 207.195.108.140 nếu cả hai không thể truy cập được thì máy chủ bị hỏng và tự nhiên wget sẽ không thể truy xuất tệp bạn muốn. nếu có một số ip có thể truy cập, wget sẽ bỏ qua ip cho đến khi nó bắt gặp một ip mà nó có thể tiếp cận và tải xuống tệp từ đó. trong trường hợp của bạn, cả hai máy chủ dường như ngừng hoạt động do thời gian phản hồi dài tôi nghĩ (hết thời gian).
Goez

bạn có thể sử dụng tùy chọn -T trong wget để kéo dài giá trị thời gian chờ Thời gian chờ là giây thành giây, vì vậy có thể giá trị cao hơn sẽ giúp ích
Goez

Đồng ý. Tôi hiểu rồi. Cả hai ips đều không thể ping được (tôi đã kiểm tra từ 2 máy khác nhau). Tuy nhiên, liên kết hoạt động tốt trong trình duyệt và khi bị xóa từ các máy khác với máy gây rắc rối: /
Szczepan

Thời gian chờ cao hơn không giúp được gì
Szczepan

1

Khắc phục sự cố độ phân giải DNS chậm trong các tập lệnh PHP bằng thư viện CURL.

Từ tài liệu libcurl:

CURLOPT_IPRESOLVE

Cho phép ứng dụng chọn loại địa chỉ IP sẽ sử dụng khi phân giải tên máy chủ. Điều này chỉ thú vị khi sử dụng tên máy chủ phân giải địa chỉ bằng nhiều phiên bản IP. Các giá trị được phép là:

CURL_IPRESOLVE_WHATEVER

Mặc định, giải quyết địa chỉ cho tất cả các phiên bản IP mà hệ thống của bạn cho phép.

CURL_IPRESOLVE_V4

Giải quyết tới các địa chỉ IPv4.

CURL_IPRESOLVE_V6

Giải quyết tới các địa chỉ IPv6.

Tôi tin rằng chúng có thể được đặt làm biến môi trường. Ít nhất là trong khi sử dụng PHP, các cài đặt này đã tạo ra sự khác biệt rất lớn đối với tốc độ phân giải.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.