ฉันเรียกใช้บริการเว็บที่ดำเนินการประมวลผลภาพพื้นฐานบางอย่าง
เว็บเซิร์ฟเวอร์จะยอมรับการอัปโหลดรูปภาพจากผู้ใช้ก่อนและเก็บไว้ชั่วคราว จากนั้นเซิร์ฟเวอร์แบ็กเอนด์จะดาวน์โหลดอิมเมจผ่านคำขอรับ 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;
}