2008-11-05 16 views
8

Có bất kỳ bài viết/sách nào xác định giới hạn thiết kế giới hạn trên cho thời gian chờ WS không? Bạn có thời gian chờ ở máy chủ hoặc đề xuất thời gian chờ của ứng dụng cụ thể không?Thực tiễn tốt nhất cho thời gian chờ dịch vụ web

Có một thực hành tốt nhất phổ biến như "không bao giờ thiết kế WS có thể mất nhiều thời gian hơn 60 giây, sử dụng một mẫu thẻ không đồng bộ"

Tôi muốn biết những gì bạn làm hoặc ý kiến ​​của bạn quá.

Trả lời

4

Câu hỏi này, và những người có liên quan đến trong câu trả lời cho nó, có thể giúp: Is there some industry standard for unacceptable webapp response time?

Hơi tiếp tuyến với câu hỏi của bạn (không có khoảng thời gian, xin lỗi), nhưng tôi nghi ngờ hữu ích cho công việc của bạn: Một chung phương pháp tiếp cận với thời gian chờ là cân bằng chúng với bộ đếm thời gian "tắt".
Nó giống như sau: Lần đầu tiên dịch vụ hết giờ, đừng lo lắng về điều đó. Lần thứ hai liên tiếp một dịch vụ hết giờ, đừng bận tâm gọi nó trong N giây. Lần thứ ba liên tiếp dịch vụ hết giờ, không gọi dịch vụ này trong N + 1 giây. Sau đó, N + 2, N + 3, N + 5, N + 8, v.v. cho đến khi bạn đạt đến giới hạn tối đa M.

Bộ đếm thời gian chờ được đặt lại khi bạn nhận được phản hồi hợp lệ.

Tôi đang sử dụng chuỗi Fibbonacci để tăng khoảng thời gian "lùi lại" ở đây, nhưng tất nhiên bạn có thể sử dụng bất kỳ chức năng phù hợp nào khác - điểm chính là, nếu dịch vụ bạn đang cố giữ thời gian, bạn " niềm tin "trong nó trở nên nhỏ hơn và nhỏ hơn, vì vậy bạn dành ít tài nguyên hơn để tìm đến nó, và gõ cửa ít khi hơn. Điều này có thể giúp dịch vụ ở đầu bên kia, điều đơn giản có thể bị quá tải và yêu cầu lại chỉ làm cho vấn đề tồi tệ hơn và nó sẽ tăng thời gian phản hồi của bạn vì bạn sẽ không chờ đợi một dịch vụ không có khả năng trả lời.

+0

Phổ biến hơn khi có tiến trình hình học thay vì tiến trình tuyến tính (ví dụ: N, 2N, 4N) - để ngăn máy chủ bị búa. – ashes999

+1

Việc thêm một số tiền ngẫu nhiên vào mỗi lần thử lại sau lần đầu tiên để dịch vụ không bị tiêu hủy bởi mọi thứ được thử lại vào cùng một thời điểm chính xác. –

1

Lấy lượng dữ liệu bạn đang chuyển qua dịch vụ web của bạn để xem quá trình mất bao lâu.

Thêm 60 giây vào số đó và kiểm tra.

Nếu bạn có thể làm cho nó hết thời gian chờ trên kết nối tốt thì hãy thêm 30 giây nữa.

rửa sạch và lặp lại.

1

Chúng tôi thường dành thời gian phản hồi dự kiến ​​cho dịch vụ web đó (như được ghi trong đặc tả giao diện của chúng tôi) và thêm 30 giây vào đó.

Sau đó, chúng tôi theo dõi nhật ký trong UAT để xem có bất kỳ mẫu nào (ví dụ: các cuộc gọi DB cụ thể trong một thời gian dài) và thay đổi khi thích hợp.

9

Công cụ này khoảng 30 giây thời gian chờ thứ hai là lời khuyên vô lý, IMO. Thời gian chờ của bạn sẽ mất khoảng 3 giây. Vâng. Số ba. Số sau hai và trước bốn. Nếu bạn đang xây dựng một ứng dụng dựa trên SOA, thì DEFINITELY 3 giây hoặc ít hơn.

Hãy nghĩ về điều đó ... người dùng ứng dụng của bạn mong đợi TOTAL thời gian phản hồi khoảng năm giây trở xuống (tốt hơn là khoảng ba giây). Nếu MỌI CÁCH DỊCH VỤ CÁ NHÂN đang mất nhiều hơn một vài mili giây * để quay trở lại, bạn sẽ bị hosed. Chờ 30 giây cho ONE dịch vụ để trở về là vĩnh cửu. Người dùng sẽ không bao giờ chờ đợi lâu như vậy.Ngoài ra, nếu bạn biết họ phải quay trở lại trong phạm vi thứ hai, thì điểm chờ đợi cho một số khác là hoặc nhiều giây hơn để báo hiệu điều kiện lỗi; nó sẽ không hoạt động một cách kỳ diệu khi nó không cách đây 28 giây. Nếu ứng dụng của bạn có các thay đổi trong thời gian phản hồi trung bình từ một giây đến hơn 30 giây, thì ứng dụng đó được thiết kế không chính xác. Bạn có thể nghĩ về một số bộ nhớ đệm hoặc một cái gì đó.

+4

Nó có thể là một dịch vụ giữa các máy chủ ứng dụng, không thực sự liên quan đến người dùng cuối. – MMind

+0

Thú vị, @Robert làm thế nào để bạn đến số đó: 3 giây? – DanielV

+0

Lời khuyên này có vẻ rất tiện lợi. Tất nhiên người dùng mong đợi phản ứng nhanh chóng, nhưng là nhận được một lỗi trở lại trong 3 giây thực sự tốt hơn so với nhận được một câu trả lời hợp lệ trong 20 giây? Thiết kế cho một phản ứng nhanh chóng và chọn thời gian chờ của khách hàng không giống nhau. – Nick