Điểm:0

Sử dụng CPU 100% từ iowait do Nginx gây ra, không được giải quyết bằng cách bật và tắt sendfile

lá cờ us

Tôi chạy một dịch vụ web thực hiện một số thao tác xử lý hình ảnh cơ bản.

Trước tiên, máy chủ web chấp nhận hình ảnh tải lên từ người dùng và tạm thời lưu trữ chúng. Sau đó, một máy chủ phụ trợ sẽ tải xuống hình ảnh thông qua yêu cầu nhận HTTP và thực hiện quá trình xử lý thực tế. Sau đó nó được gửi trở lại máy chủ web. Người dùng sau đó tải xuống các hình ảnh. Hình ảnh được xử lý thường lớn hơn đáng kể so với hình ảnh gốc.

Dịch vụ web thỉnh thoảng gặp đột biến iowait với mức sử dụng CPU cao và máy chủ đưa ra lỗi hết thời gian chờ yêu cầu không khả dụng. Iowait cao là từ nginx.

Giải pháp đưa ra cho các vấn đề tương tự khuyến nghị bật sendfile và tắt directio. tôi cũng đã tắt bộ đệm và request_buffers vì tôi đã đọc rằng đó cũng có thể là một nguồn gốc của vấn đề. Mặc dù điều này dường như làm giảm phần nào sự cố xảy ra, nhưng nó vẫn thỉnh thoảng xảy ra và tôi không biết tại sao.

Tôi đã sao chép các tệp cấu hình của mình bên dưới. Có ai có bất cứ đề nghị về những gì khác cần phải được thay đổi? Vấn đề thực sự khiến tôi phát điên.

người phục vụ {
     nếu ($http_user_agent ~ ^$){
        trả lại 503;
    }

    if ($http_user_agent ~* "Mozilla/4.0\ \(tương thích;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\ )") {
        trả lại 503;
    }


    server_name [đã xử lý lại: trang web];

    access_log /var/log/[đã xử lý lại: logfile];
    error_log /var/log/[đã xử lý lại: logfile];

    nghe 0.0.0.0:443 ssl; 
    ssl_certificate [đã xử lý lại: địa chỉ chứng chỉ]
    ssl_certificate_key [đã xử lý lại: khóa chứng chỉ]
    bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot

    error_page 502 /custom_502.html;
    vị trí = /custom_502.html {
        gốc /usr/share/nginx/html;
        nội bộ;
        }
    vị trí = /error_502.png {
        gốc /usr/share/nginx/html;
    }
    client_max_body_size 300M;
    tắt proxy_request_buffering;


    địa điểm / {
                # chuyển tiếp yêu cầu ứng dụng đến máy chủ gunicorn
                proxy_pass http://localhost:8001;
                proxy_redirect tắt;
                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;
        }
        vị trí/tĩnh {
                
                proxy_max_temp_file_size 0;
                hướng tắt;
                gửi tệp trên;
                bí danh [đã xử lý lại: vị trí trang web]/tĩnh;
                hết hạn 5d;
        }

}


người phục vụ {
      nếu ($http_user_agent ~ ^$){
        trả lại 503;
    }

    if ($http_user_agent ~* "Mozilla/4.0\ \(tương thích;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\ )") {
        trả lại 503;
    }

  if ($host = [đã xử lý lại: địa chỉ]) {
        trả lại 301 https://$host$request_uri;


    nghe 0.0.0.0:80;
    server_name [đã xử lý lại: trang web]; 
    trả lại 404;     
    client_max_body_size 300M;

}

                                                       

Đă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.