ฉันมีแอป Sinatra ที่ทำงานบน Thin โดยมี Nginx เป็น reverse proxy และได้รับทราฟฟิกจำนวนมาก
ผู้ใช้ของฉันกำลังรายงานข้อผิดพลาด 502 และดูที่บันทึกของ Nginx ฉันเห็นสิ่งเหล่านี้มากมาย:
[คำเตือน] เซิร์ฟเวอร์อัปสตรีมถูกปิดใช้งานชั่วคราวขณะเชื่อมต่อกับอัปสตรีม
[ข้อผิดพลาด] การเชื่อมต่อ () ล้มเหลว (111: การเชื่อมต่อถูกปฏิเสธ) ขณะเชื่อมต่อกับอัปสตรีม
ถ้าฉันดูบันทึกจากแอป Sinatra ฉันไม่เห็นข้อผิดพลาด
ฉันกำลังเริ่มต้นเซิร์ฟเวอร์ Thin ด้วยสิ่งต่อไปนี้:
--max-conns 15360 --max-persistent-conns 2048 --เธรดเริ่มต้น
ฉันได้ตั้งค่าต่อไปนี้สำหรับ Nix:
worker_processes อัตโนมัติ
worker_rlimit_nofile 65535;
เหตุการณ์ {
worker_connections 15360;
}
ไฟล์โฮสต์สำหรับแอป Sinatra:
เซิร์ฟเวอร์ {
ชื่อเซิร์ฟเวอร์ my_sinatra_app;
#บอทจำนวนมากพยายามค้นหาช่องโหว่ในไซต์ php
ตำแหน่ง ~ \.php {
กลับ 404;
}
ที่ตั้ง / {
proxy_pass http://localhost:6903;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ 'อัปเกรด';
proxy_set_header โฮสต์ $host;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
#เพิ่มบัฟเฟอร์
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
ฟัง 443 ssl; # จัดการโดย Certbot
#...
#ข้อมูลSSL
}
ทำไมสิ่งนี้ถึงเกิดขึ้น? การจราจรมากเกินไป?
ทางออกคืออะไร? ฉันยังคงเพิ่ม worker_connections
และ --max-conns
จนกว่าข้อผิดพลาดจะหยุดลง?
ผลลัพธ์ของ ท็อป
ดูเหมือนว่าเซิร์ฟเวอร์สามารถจัดการได้มากขึ้น:
ข้อมูลเชิงลึก / คำแนะนำใด ๆ ?
แก้ไข
ในขณะที่ฉันไม่เห็นข้อผิดพลาดใด ๆ ในบันทึกของ Sinatra หรือ สถานะ systemctl
ผลลัพธ์ ฉันสังเกตเห็นว่าบริการไม่เคยทำงานเป็นเวลานาน ดังนั้นดูเหมือนว่าเซิร์ฟเวอร์ Thin จะหยุดทำงานบ่อยครั้ง มีความคิดใดที่ฉันจะแก้ปัญหานี้ต่อไปได้อย่างไร