Score:0

การใช้งาน CPU 100% จาก iowait ที่เกิดจาก Nginx ไม่สามารถแก้ไขได้โดยการเปิด sendfile และปิด directio

ธง us

ฉันเรียกใช้บริการเว็บที่ดำเนินการประมวลผลภาพพื้นฐานบางอย่าง

เว็บเซิร์ฟเวอร์จะยอมรับการอัปโหลดรูปภาพจากผู้ใช้ก่อนและเก็บไว้ชั่วคราว จากนั้นเซิร์ฟเวอร์แบ็กเอนด์จะดาวน์โหลดอิมเมจผ่านคำขอรับ HTTP และดำเนินการประมวลผลจริง จากนั้นจะถูกส่งกลับไปยังเว็บเซิร์ฟเวอร์ จากนั้นผู้ใช้จะดาวน์โหลดรูปภาพ ภาพที่ประมวลผลโดยทั่วไปจะมีขนาดใหญ่กว่าภาพต้นฉบับอย่างมาก

เว็บเซอร์วิสพบการเพิ่มขึ้นอย่างรวดเร็วของ iowait ในบางครั้งจากการใช้งาน CPU ที่สูง และเซิร์ฟเวอร์แสดงข้อผิดพลาดการหมดเวลาของคำขอที่ไม่พร้อมใช้งาน iowait สูงมาจาก nginx

แนะนำวิธีแก้ไขปัญหาที่คล้ายกัน เปิด sendfile และปิด directio. ฉันยัง ปิดบัฟเฟอร์และ request_buffers เนื่องจากฉันได้อ่านมาว่านั่นอาจเป็นสาเหตุของปัญหาได้เช่นกัน แม้ว่าสิ่งนี้ดูเหมือนจะลดการเกิดปัญหาลงบ้าง แต่ก็ยังเกิดขึ้นเป็นระยะ ๆ และฉันก็ไม่รู้ว่าทำไม

ฉันได้คัดลอกไฟล์ปรับแต่งของฉันด้านล่าง ใครมีคำแนะนำว่าต้องเปลี่ยนอะไรอีกบ้าง? ปัญหากำลังทำให้ฉันบ้าจริงๆ

เซิร์ฟเวอร์ {
     ถ้า ($http_user_agent ~ ^$){
        กลับ 503;
    }

    ถ้า ($http_user_agent ~* "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\ )") {
        กลับ 503;
    }


    server_name [แก้ไข: เว็บไซต์];

    access_log /var/log/[แก้ไข: logfile];
    error_log /var/log/[แก้ไข: logfile];

    ฟัง 0.0.0.0:443 ssl; 
    ssl_certificate [แก้ไข: ที่อยู่ใบรับรอง]
    ssl_certificate_key [แก้ไขแล้ว: รหัสใบรับรอง]
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot

    error_page 502 /custom_502.html;
    ตำแหน่ง = /custom_502.html {
        รูท /usr/share/nginx/html;
        ภายใน;
        }
    ตำแหน่ง = /error_502.png {
        รูท /usr/share/nginx/html;
    }
    client_max_body_size 300M;
    ปิด proxy_request_buffering;


    ที่ตั้ง / {
                # ส่งต่อคำขอแอปพลิเคชันไปยังเซิร์ฟเวอร์ gunicorn
                proxy_pass http://localhost:8001;
                ปิด proxy_redirect;
                proxy_set_header โฮสต์ $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        }
        ตำแหน่ง / คงที่ {
                
                proxy_max_temp_file_size 0;
                ปิดทิศทาง;
                ส่งไฟล์บน;
                นามแฝง [แก้ไข: ที่ตั้งไซต์]/คงที่;
                หมดอายุ 5d;
        }

}


เซิร์ฟเวอร์ {
      ถ้า ($http_user_agent ~ ^$){
        กลับ 503;
    }

    ถ้า ($http_user_agent ~* "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\ )") {
        กลับ 503;
    }

  ถ้า ($host = [แก้ไข: ที่อยู่]) {
        ส่งคืน 301 https://$host$request_uri;


    ฟัง 0.0.0.0:80;
    server_name [แก้ไข: เว็บไซต์]; 
    กลับ 404;     
    client_max_body_size 300M;

}

                                                       

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา