2009-01-20 77 views
5

Khoảng thời gian hợp lý để chờ yêu cầu web trả lại là bao nhiêu? Tôi biết điều này có thể là một chút được tải như một câu hỏi, nhưng tất cả những gì tôi đang cố gắng làm là xác minh xem một trang web có sẵn hay không.Thời gian chờ yêu cầu web

Có thể có cách nào tốt hơn?

try 
{ 
    // Create the web request 
    HttpWebRequest request = WebRequest.Create(this.getUri()) as HttpWebRequest; 

    request.Credentials = System.Net.CredentialCache.DefaultCredentials; 

    // 2 minutes for timeout 
    request.Timeout = 120 * 1000; 

    if (request != null) 
    { 
     // Get response 
     response = request.GetResponse() as HttpWebResponse; 

     connectedToUrl = processResponseCode(response); 
    } 
    else 
    { 
     logger.Fatal(getFatalMessage()); 

     string error = string.Empty; 
    } 
} 
catch (WebException we) 
{ 
... 
} 
catch (Exception e) 
{ 
... 
} 

Trả lời

5

Bạn cần xem xét người dùng dịch vụ web sẽ mất bao lâu, ví dụ: nếu bạn đang kết nối với máy chủ web DB và bạn chạy một truy vấn dài, bạn cần phải làm cho thời gian chờ của dịch vụ web dài hơn thời gian truy vấn sẽ mất. Nếu không, dịch vụ web sẽ (sai) hết thời gian chờ.

Tôi cũng sử dụng một cái gì đó như (thời gian của người tiêu dùng) + 10 giây.

2

Tự động tôi muốn cho phép 10 giây, nhưng thực sự phụ thuộc vào loại kết nối mạng mà mã sẽ chạy. Hãy thử chạy một số ping thử nghiệm trong một khoảng thời gian vài ngày/tuần để xem thời gian phản hồi điển hình là gì.

1

Lượng thời gian hợp lý để chờ yêu cầu web có thể khác nhau từ máy chủ này sang máy chủ khác. Nếu máy chủ ở cuối xa của một liên kết có độ trễ cao thì rõ ràng sẽ mất nhiều thời gian hơn để phản hồi hơn khi nó ở trong phòng tiếp theo. Nhưng hai phút có vẻ như nó là nhiều hơn thời gian dư dật cho một máy chủ để đáp ứng. Giá trị thời gian chờ mặc định cho lệnh PING được biểu thị bằng giây, không phải phút. Tôi đề nghị bạn xem xét các giá trị thời gian chờ được sử dụng bởi các tiện ích mạng như PING hoặc TRACERT cho cảm hứng.

1

Tôi sẽ chỉ chờ (MAX) 30 giây có thể gần hơn 15. Nó thực sự phụ thuộc vào những gì bạn đang làm và kết quả không thành công. Như tôi chắc chắn bạn biết rằng có rất nhiều lý do tại sao bạn có thể nhận được một thời gian chờ ...

1

Tôi đoán điều này phụ thuộc vào hai điều:

  • tốc độ mạng/tải (như những người khác đã viết, sử dụng ping sức cung cấp cho bạn ý tưởng về điều này)
  • loại trang bạn đang gọi: ví dụ: nó là một trang HTML tĩnh hay nó là một trang mà có thể làm một số hoạt động tốn thời gian (truy cập DB, vv)

Dù sao, tôi nghĩ 2 phút là rất nhiều thời gian. I chắc chắn sẽ giảm thời gian chờ xuống dưới 30 giây.

2

Tôi sẽ đo lường mất bao lâu để các trang tồn tại để phản hồi. Nếu tất cả họ đều phản hồi trong khoảng thời gian tương tự, thì tôi sẽ đặt khoảng thời gian chờ khoảng gần gấp đôi số tiền đó.

1

Tôi nhận thấy điều này không trực tiếp trả lời câu hỏi của bạn, nhưng sau đó "câu trả lời" cho câu hỏi này hơi khó khăn. Dù sao, một công cụ tôi đã sử dụng gomez trong quá khứ để đo lường thời gian tải trang từ các phần khác nhau của thế giới. Hoàn toàn miễn phí và nếu bạn chưa thực hiện thử nghiệm này trước khi nó có thể hữu ích trong việc cung cấp cho bạn ý tưởng vững chắc về thời gian tải trang điển hình cho một trang nhất định từ một vị trí nhất định.

2

Chỉ muốn thêm nhiều thời gian tôi sẽ sử dụng thời gian chờ thích ứng. Có thể là một thước đo đơn giản như:

period += (numTimeouts/numRequests > .01 ? someConstant: 0);

kiểm tra bất cứ khi nào bạn nhấn một thời gian chờ để thử và giữ timeouts dưới 1% (ví dụ). Chỉ cần cẩn thận về việc giảm nó quá thấp :)

Các vấn đề liên quan