Score:0

HAProxy Timeouts และ Streaming Backend - ค้างตลอดกาล

ธง ru
Sam

ฉันมีแบ็กเอนด์ที่อยู่เบื้องหลัง haproxy ที่สตรีมไฟล์ไปยังไคลเอนต์โดยใช้สคริปต์ CGI ฉันกำลังพยายามตั้งค่าการหมดเวลาสำหรับเซิร์ฟเวอร์ส่วนหลังของฉัน ทุกอย่างทำงานได้ดียกเว้นการหมดเวลานี้

เมื่อฉันตั้งค่าตัวเลือก "timeout server" ใน haproxy config เป็น 1 วินาที (เพียงเพื่อทดสอบ - แบ็กเอนด์ใช้เวลาอย่างน้อย 2-3 วินาที) และทำการร้องขอ หลังจาก 1 วินาที มันจะใส่รายการลงในไฟล์บันทึกสำหรับ คำขอแบ็กเอนด์ (ก่อนที่คำขอจะเสร็จสมบูรณ์) และจากนั้น คำขอจะหยุดทำงานตลอดไป ลูกค้าไม่ได้รับการตอบกลับ ไม่มีข้อผิดพลาด ไม่มีอะไร

ฉันได้ตรวจสอบเอกสารทั้งหมดสำหรับการกำหนดค่า haproxy แล้วและไม่พบตัวเลือกการหมดเวลาที่เหมาะสมที่นี่ แต่ดูเหมือนว่าเป็นพฤติกรรมเริ่มต้นที่แปลกมากที่จะหยุดทำงานตลอดไปหากหมดเวลาโดยไม่มีการตอบสนองอย่างสมบูรณ์ (ตั้งแต่ฉันรู้ว่าการตั้งค่าควรเป็นการหมดเวลาสำหรับส่วนหัวเท่านั้น - แต่ฉันไม่สามารถหาการตั้งค่าการหมดเวลาอื่นได้ สำหรับแบ็กเอนด์)

haproxy ไม่รองรับการตอบสนอง HTTP แบบสตรีมใด ๆ หรือไม่ ฉันเข้าใจว่าเราไม่สามารถส่งส่วนหัวได้ แต่ฉันสามารถตั้งค่าให้ส่งข้อมูลที่มีเพื่อให้ไคลเอ็นต์จับได้ว่ามีรูปแบบไม่ถูกต้องได้หรือไม่

นี่คือบรรทัดบันทึกสำหรับหนึ่งในคำขอเหล่านี้ที่ "หมดเวลา":

28 เม.ย. 09:32:51 น. พิมพ์ haproxy[29896]: 127.0.0.1:37662 [28/Apr/2022:09:32:47.317] http_front http_back/SERVERNAME 2/3007/23/46/4080 200 150 - - sD- - 1/1/0/0/+3 0/0 "โพสต์ / HTTP/1.1"

การกำหนดค่า haproxy แบบเต็ม:

ทั่วโลก
    บันทึก /dev/log local0.log
    บันทึก /dev/log local1 ประกาศ
    chroot /var/lib/haproxy
    ซ็อกเก็ตสถิติ /run/haproxy/admin.sock โหมด 660 ระดับผู้ดูแลระบบ expose-fd ผู้ฟัง
    หมดเวลาสถิติ 30 วินาที
    ผู้ใช้แฮพร็อกซี
    กลุ่ม haproxy
    ภูต

    # ตำแหน่งวัสดุ SSL เริ่มต้น
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # ดู: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA -CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

ค่าเริ่มต้น
    เข้าสู่ระบบทั่วโลก
    โหมด http
    ตัวเลือก httplog
    ตัวเลือก dontlognull
    ตัวเลือกการจัดส่งซ้ำ
    ลองใหม่ 3
    หมดเวลาคิว 15m # ลูกค้าควรรอนานแค่ไหนเพื่อให้เซิร์ฟเวอร์พร้อมใช้งาน
    #แม็กซ์คอน10000
    หมดเวลาลูกค้า 15m
    หมดเวลาเชื่อมต่อ 1 วินาที
    เซิร์ฟเวอร์หมดเวลา 10 วินาที
    เซสชันจำกัดอัตรา 10,000
    ไฟล์ข้อผิดพลาด 400 /etc/haproxy/errors/400.http
    ไฟล์ข้อผิดพลาด 403 /etc/haproxy/errors/403.http
    ไฟล์ข้อผิดพลาด 408 /etc/haproxy/errors/408.http
    ไฟล์ข้อผิดพลาด 500 /etc/haproxy/errors/500.http
    ไฟล์ข้อผิดพลาด 502 /etc/haproxy/errors/502.http
    ไฟล์ข้อผิดพลาด 503 /etc/haproxy/errors/503.http
    ไฟล์ข้อผิดพลาด 504 /etc/haproxy/errors/504.http

ส่วนหน้า http_front
    ผูก *:88
    สถิติ uri /haproxy?stats
    default_backend http_back
    #แม็กซ์คอน10000

แบ็กเอนด์ http_back
    ยอดคงเหลือน้อยที่สุด
    ลองใหม่ทั้งหมดลองใหม่ข้อผิดพลาด
    เซิร์ฟเวอร์เริ่มต้น maxconn 1 สังเกตข้อผิดพลาด layer7-limit 1 on-error-mark-down
    เซิร์ฟเวอร์ NAME IP:PORT

โพสต์คำตอบ

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