Điểm:0

NGINX bị chậm trễ khi hoàn tất quá trình tải lên WebDAV được ủy quyền

lá cờ nl

Tôi có máy chủ IIS nội bộ chạy WebDAV đang được sử dụng trực tiếp để tải lên và tải xuống tệp từ ứng dụng Android.

DNS nội bộ của tôi giải quyết https://webdav.mydomain.com trực tiếp tới IIS (bỏ qua NGINX) và giao tiếp nội bộ này dường như hoạt động mà không gặp sự cố. Tốc độ tải lên và tải xuống không phải là tuyệt vời đối với tốc độ không dây có sẵn, nhưng là những gì tôi đã quen với cấu hình IIS của mình (cho dù là do giới hạn của phần cứng hay đơn giản là giới hạn của IIS WebDAV).

Bên ngoài mạng, URL phân giải thành IP công khai của máy chủ NGINX của tôi. Khi sử dụng ứng dụng từ xa, tốc độ tải xuống cũng có vẻ chấp nhận được (~25 MB/s).

Tốc độ tải lên tuy nhiên là chậm. Chúng chiếm khoảng một nửa tốc độ tải xuống. Tuy nhiên, điều quan trọng hơn sự chậm chạp là có một độ trễ rất lâu ở cuối quá trình tải lên trước khi hoàn tất.

Ứng dụng khách của tôi hiển thị trạng thái tải lên báo cáo # byte đang được tải lên và tổng kích thước tải lên. Khi tải lên đạt khoảng 99% tổng kích thước tải lên, nó sẽ nằm đó một lúc trước khi hoàn tất.

Trên tệp 50 MB, nó sẽ dừng khoảng 49 MB và đợi khoảng 30 giây trước khi hoàn thành. Quá trình tải lên 3GB đã đợi ít nhất 5 phút trước khi hoàn tất thành công.

Vấn đề này hoàn toàn không tồn tại trong nội bộ khi máy chủ NGINX không kết hợp. Tôi chấp nhận rằng tôi sẽ có thông lượng bên ngoài chậm hơn và thậm chí phần cứng NGINX hạn chế có thể có một số điều tiết bổ sung. Nhưng tôi không chắc tại sao lại có sự chậm trễ lâu như vậy trong việc NGINX có thể hoàn tất quá trình tải lên máy chủ IIS.

Dưới đây là cấu hình NGINX có liên quan:

ngược dòng webdav_backend {
        máy chủ 10.10.10.102:443;
        lưu giữ 100;
}

người phục vụ {
        nghe 443 ssl http2;

        server_name webdav.mydomain.com;

        proxy_set_header Máy chủ lưu trữ $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Protocol $scheme;

        proxy_redirect tắt;
        tắt proxy_buffering;

        proxy_connect_timeout 180 giây;
        proxy_send_timeout 180 giây;
        proxy_read_timeout 180 giây;
        fastcgi_send_timeout 180s;
        fastcgi_read_timeout 180 giây;

        proxy_http_version 1.1;
        proxy_set_header Kết nối "";

        vị trí @proxy {
                proxy_pass https://webdav_backend;
        }

        địa điểm / {
                try_files $uri @proxy;
                client_max_body_size 4G;
        }

        access_log /opt/var/log/nginx/webdav.mydomain.com.remote.log remote_hosts if=$remote_hosts;
        access_log /opt/var/log/nginx/webdav.mydomain.com.access.log;
        error_log /opt/var/log/nginx/webdav.mydomain.com.error.log;
}

Điểm:1
lá cờ nl

Vì vậy, sau khi đăng, tôi quay lại để thử nắm bắt thêm một số thông tin.

Tôi nhận thấy rằng trong quá trình tải lên, máy chủ IIS của tôi không nhận được dữ liệu ngay khi quá trình tải lên của tôi bắt đầu. Đối với các tệp nhỏ hơn, chẳng hạn như tệp 50 MB của tôi, có vẻ như máy chủ phụ trợ không bắt đầu nhận dữ liệu cho đến khi nó gần hoàn thành và đối với các tệp lớn hơn, tôi nhận thấy nhiều bộ nhớ đệm trên máy khách hơn cùng với các khoảng thời gian máy chủ phụ trợ không hoạt động. dữ liệu.

Tôi cũng nhận thấy rằng bộ nhớ trên máy chủ NGINX của tôi (phần cứng nhúng có thông số kỹ thuật thấp) đang giảm khoảng 70 MB (còn lại 75% bộ nhớ khả dụng) trong khi quá trình truyền đang diễn ra.

Tất cả điều này củng cố cho tôi rằng máy chủ NGINX bằng cách nào đó vẫn đang lưu vào bộ đệm/bộ nhớ đệm dữ liệu mặc dù "proxy_buffering off" được chỉ định trong cấu hình. Tôi đã xem xét tài liệu và tìm thấy:

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering

Việc tắt tính năng này không chỉ giúp loại bỏ hoàn toàn độ trễ mà dường như đã cải thiện tốc độ tải lên của tôi nói chung khoảng 50%.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.