Score:1

การเชื่อมต่อ Sinatra + Thin + Nginx () ล้มเหลว (111: การเชื่อมต่อถูกปฏิเสธ) ขณะเชื่อมต่อกับอัปสตรีม

ธง cn

ฉันมีแอป 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 จะหยุดทำงานบ่อยครั้ง มีความคิดใดที่ฉันจะแก้ปัญหานี้ต่อไปได้อย่างไร

Score:0
ธง cn

ดังนั้นปัญหาจึงเกิดขึ้นจริงกับเซิร์ฟเวอร์ Thin ด้วยเหตุผลบางประการ มันหยุดทำงานทุก ๆ สองสามนาทีด้วยข้อผิดพลาด C ++ ดังนั้น Nginx จะส่งข้อผิดพลาดเหล่านั้นในขณะที่พยายามเชื่อมต่อกับ Thin และล้มเหลว (เนื่องจาก Thin จะขัดข้อง / รีบูต)

วิธีแก้ไขคือเปลี่ยน Thin เป็น Puma หลังจากนั้นก็ไม่มีปัญหาอีก

โพสต์คำตอบ

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