2013-02-05 34 views
11

Tôi đang sử dụng pycurl làm giao diện người dùng cho thư viện Python boto. Nó rất nhanh và linh hoạt nhưng tôi có vấn đề rằng việc tải lên các tệp lớn thường rất thất bại khi thiết lập lại kết nối. Khi tôi sử dụng đồng bằng boto với đồng bằng httplib, nó đáng tin cậy hơn nhiều.S3 Tải lên với các ngắt pycurl

Những gì tôi tìm thấy bằng Wireshark là sau một thời gian (hoặc đôi khi khá sớm), máy của tôi ngừng nhận ACK từ S3, vì vậy nó sẽ đặt lại kết nối. Dường như có vẻ như pycurl quá nhanh khiến nó bị ngắt kết nối. Và nếu tôi tăng tốc độ tải lên (tôi sử dụng giao diện đa) hoặc sử dụng kết nối internet chậm hơn, quá trình tải lên sẽ chạy tốt.

Tôi vẫn tự hỏi mình có thể làm gì sai.

Tôi cũng đã cố tải lên bằng .NET S3 SDK. Đó là khoảng 3 lần chậm hơn, nhưng thành công. Ngoài ra, đó là tất cả trên Windows 7, OS X máy trên cùng một mạng một lần nữa tải lên chậm hơn rất nhiều, nhưng đáng tin cậy.

+1

Âm thanh như trình điều khiển NIC trong Windows bị nghẹt thở. Tôi đã nhìn thấy hành vi này trong các ứng dụng khác. Bằng chứng giai thoại nói rằng việc tắt các tùy chọn tải xuống TCP khác nhau trong trình điều khiển có thể hữu ích. – nikola

Trả lời

3

Vì bạn đã đề cập rằng bạn gặp sự cố trên Windows 7, bạn có thể chạy lời nhắc lệnh với tư cách quản trị viên và đăng kết quả của netsh int tcp show global không? Bạn sẽ thấy một cái gì đó như sau:

TCP Global Parameters 
---------------------------------------------- 
Receive-Side Scaling State   : enabled 
Chimney Offload State    : automatic 
NetDMA State      : enabled 
Direct Cache Acess (DCA)   : disabled 
Receive Window Auto-Tuning Level : normal 
Add-On Congestion Control Provider : none 
ECN Capability      : disabled 
RFC 1323 Timestamps     : disabled 

Tôi đề nghị bạn sao chép/dán kết quả vào tệp .txt để ghi chú cài đặt hiện tại của bạn. Các cài đặt mà bạn quan tâm là Giảm lượng ống khói, Chia tỷ lệ bên nhận (RSS) và NetDMA. Đây là tất cả các tính năng cố gắng giảm tải xử lý từ/tới NIC hoặc CPU và đôi khi chúng có thể gây ra các sự cố với các triệu chứng tương tự như các triệu chứng mà bạn mô tả.

Trước khi gây rối với RSS hoặc NetDMA, tôi sẽ thử tắt Cắt ống khói bằng cách chạy netsh int tcp set global chimney=disabled và tắt tải xuống TCP dưới Device Manager > Network Adapters > Advanced tab.

Nếu điều đó không giải quyết được sự cố của bạn, bạn có thể cần phải thử nghiệm với hai tùy chọn còn lại. Dưới đây là một số Microsoft KB article với các chi tiết về sửa đổi tất cả chúng.

+0

Cảm ơn, điều này có vẻ thú vị, nhưng thật không may, tôi không thể xác minh nó ngay bây giờ, bởi vì một cái gì đó thay đổi tại nơi làm việc của tôi và tải lên luôn chạy khá chậm nhưng ổn định. Nhưng tôi vẫn tự hỏi làm thế nào để giảm thiểu vấn đề này trong SW của tôi ... –

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