2010-07-13 41 views
6

Tôi có một ứng dụng máy chủ chạy trên đám mây Amazon EC2. Từ khách hàng của tôi (trình duyệt) tôi thực hiện một yêu cầu HTTP tải lên một tập tin đến máy chủ mà sau đó xử lý các tập tin. Nếu có quá nhiều xử lý (tệp lớn ), máy chủ luôn luôn hết thời gian với lỗi tiếp nối phụ trợ 504 luôn chính xác sau 120 giây. Mặc dù tôi nhận được lỗi này, máy chủ vẫn tiếp tục xử lý yêu cầu và hoàn thành nó (được xác minh bằng cách kiểm tra cơ sở dữ liệu) nhưng tôi không thể thấy kết quả cuối cùng trên máy khách của tôi vì hết thời gian chờ.Hết thời gian chờ HTTP 504 sau 120 giây chính xác

Tôi không biết gì về lý do điều này xảy ra. Có ai phải đối mặt với một thời gian chờ 504 tương tự? Có một số máy chủ proxy trung gian không trong kiểm soát của tôi mà là thời gian ra?

+0

Bạn có thể giải quyết vấn đề này không? – Tony

Trả lời

0

có thể là thời gian chờ của trình duyệt trong khi thực thi tập lệnh.

1

Giả sử rằng mã trạng thái chính xác đang được trả lại, vấn đề là một proxy trung gian đang hết thời gian chờ. "Máy chủ, trong khi hoạt động như một cổng hoặc proxy, đã không nhận được phản hồi kịp thời từ máy chủ ngược dòng do URI chỉ định". (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.5) Rất có thể là máy chủ gốc đang gặp phải một số vấn đề (ví dụ: mất nhiều thời gian để xử lý yêu cầu của bạn)), vì vậy nó không đáp ứng nhanh chóng.

Có lẽ giải pháp tốt nhất là tái tạo lại ứng dụng máy chủ của bạn để ứng dụng đáp ứng với mã trạng thái "303 See Other"; sau đó khách hàng của bạn có thể truy xuất dữ liệu tại một điểm dữ liệu sau đó, khi máy chủ được xử lý xong và tạo kết quả cuối cùng.

Chỉnh sửa: Một ý tưởng khác là tạo lại ứng dụng máy chủ của bạn để ứng dụng đáp ứng với mã trạng thái "413 Yêu cầu thực thể quá lớn" khi yêu cầu kích thước thực thể quá lớn. Điều này sẽ loại bỏ các lỗi, mặc dù nó có thể làm cho ứng dụng của bạn ít hữu ích nếu nó chỉ có thể quá trình "nhỏ" tác phẩm "

giải pháp khả thi khác:.

  • Tăng giá trị timeout của proxy (nếu nó dưới sự kiểm soát của bạn)
  • Hãy yêu cầu của bạn đến một máy chủ khác nhau (nếu có khác, máy chủ nhanh hơn với cùng một ứng dụng)
  • Hãy yêu cầu của bạn khác nhau (nếu có thể) như vậy mà bạn đang gửi dữ liệu ít hơn tại một thời điểm
+0

Bất kỳ ý tưởng nào để giải quyết vấn đề? Máy chủ của tôi hết thời gian chờ sau 30 giây. Kịch bản tương tự, tải lên các tệp lớn trong Amazon EC2 – Tony

+0

Khác với các tệp được liệt kê? Xin lỗi, không. –

5

Tôi có một vấn đề tương tự và trong trường hợp của tôi, tôi tin rằng đó là do kết nối giữa Bộ cân bằng tải đàn hồi (ELB) và thể hiện EC2.

Để có giải pháp lâu dài, tôi sẽ đi kèm với phản hồi Trạng thái 303 + xử lý hậu back được đề xuất bởi james.garriss ở trên.

Đối với giải pháp ngắn hạn, Amazon có thể hỗ trợ để tăng thời gian chờ ELB (xem phản hồi của họ trong https://forums.aws.amazon.com/thread.jspa?messageID=491594&#491594). Thật không may có vẻ như không có cách nào để tự thay đổi thời gian chờ thông qua API hoặc giao diện điều khiển.

[Cập nhật] AWS tại không cho phép bạn cập nhật thời gian chờ nhàn rỗi hoặc thông qua giao diện điều khiển, CLI hoặc .ebextensions cấu hình. Xem http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-idle-timeout.html (nhờ @Daniel Patz để cập nhật)

+2

Có vẻ như bây giờ bạn có thể định cấu hình thời gian chờ: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-idle-timeout.html –

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