Score:0

การใช้ CPU สูงผ่าน TCP

ธง mw

ฉันใช้ haproxy 2.4 และเมื่อกำหนดค่า haproxy ในโหมด tcp ฉันได้รับการใช้งาน cpu สูง

ตัวอย่าง:

เรียกใช้เครื่องมือความเค้นเพื่อสร้างการเชื่อมต่อ 30k รอบ:

./pst -c 100000 -r 100000 -u urlist.txt -p http://192.168.58.13:3128

การใช้ cpu ในกระบวนการ haproxy ทั้งหมดเพิ่มขึ้นเกือบ 100% และโหลดเป็น 4+ ทำการทดสอบเดียวกันในโหมด http

การใช้ซีพียูอยู่ที่ประมาณ 10% ในแต่ละกระบวนการและโหลดคือ 1.20

ฉันลองใช้ nbthread แทน nbproc แต่ได้ผลลัพธ์เดียวกัน

นอกจากนี้ ปัญหานี้ยังคงดำเนินต่อไปใน haproxy 2.5

ไฟล์กำหนดค่าในโหมด HTTP:

#1,5
# ซีพียู 11
ทั่วโลก
    บันทึก 127.0.0.1 local0
    แม็กซ์คอน 200000
    nbproc 11
    แผนที่ซีพียู 1 0
    แผนผังซีพียู 2 1
    แผนผังซีพียู 3 2
    แผนผังซีพียู 4 3
    แผนผังซีพียู 5 4
    แผนผังซีพียู 6 5
    แผนที่ซีพียู 7 6
    แผนที่ซีพียู 8 7
    แผนที่ซีพียู 9 8
    แผนที่ซีพียู 10 9
    แผนที่ซีพียู 11 10
    ไอดี 0
    กิด 0
    โครต /tmp
    pidfile /var/run/haproxy.pid
    ซ็อกเก็ตสถิติ /var/run/haproxy.stat โหมด 600 ผู้ดูแลระบบระดับ
    สถิติผูกกระบวนการ 1
    ภูต
# แก้จุดบกพร่อง
#   เงียบ

ค่าเริ่มต้น
    เข้าสู่ระบบทั่วโลก
    รูปแบบบันทึก HASTATS:::%{+Q}o:::client_ip=%ci:::client_port=%cp:::datetime_of_request=[%tr]:::frontend_name_transport=%ft:::backend_name=%b :::server_name=%s:::time_to_receive_full_request=%TR:::Tw=%Tw:::Tc=%Tc:::response_time=%Tr:::active_time_of_request=%Ta:::status_code=%ST: ::bytes_read=%B:::captured_request_cookie=%CC:::captured_response_cookie=%CS:::termination_state_with_cookie_status=%tsc:::actconn=%ac:::feconn=%fc:::beconn=%bc:: :srv_conn=%sc:::รีเควส=%rc:::srv_queue=%sq:::backend_queue=%bq:::captured_request_headers_default_style=%hr:::captured_response_headers_default_style=%hs:::server_ip=%si::: server_port=%sp:::frontend_name=%f:::http_method=%HM:::http_request_uri_without_query=%HP:::http_request_query_string=%HQ:::http_request_uri=%HU:::bytes_uploaded=%U:::ssl_ciphers =%sslc:::ssl_version=%sslv:::%[capture.res.hdr(0)]
    โหมด http
    ตัวเลือก dontlognull
    ลองใหม่ 3
    ตัวเลือกการจัดส่งซ้ำ
    แม็กซ์คอน 200000
    หมดเวลาเชื่อมต่อ 5,000
    ลูกค้าหมดเวลา 50,000
    หมดเวลาเซิร์ฟเวอร์ 50,000

ส่วนหน้า ddsds
    ผูก :3128 ชื่อ ddsds
    จับภาพส่วนหัวของคำขอ Host len ​​1024
    จับภาพส่วนหัวของคำขอ Content-Type len 1024
    จับส่วนหัวคำขอ User-Agent len ​​1024
    จับส่วนหัวของคำขอผู้อ้างอิง len 1024
    ส่วนหัวคำขอจับภาพ X-Forwarded-For len 1024
    จับส่วนหัวการตอบสนอง Content-Type len 1024
    จับภาพคุกกี้ Cookie_2 เลนส์ 100
    http-request set-header mode mode:tcp
    http-ขอจับภาพ hdr(mode) len 10
    โหมด http
    ตัวเลือก httplog
# http-keep-alive: * 1 *
    ตัวเลือก http-keep-alive
    หมดเวลา http-keep-alive 15,000
    ตัวเลือกที่ต้องการเซิร์ฟเวอร์สุดท้าย
    ตัวเลือกการจัดส่งซ้ำ
    ไม่มีตัวเลือก httpclose
    ตัวเลือก http-tunnel
    ลูกค้าหมดเวลา 15,000
    หมดเวลา http-request 50,000
    หมดเวลาคิว 50,000

    default_backend default_ddsds

แบ็กเอนด์ default_ddsds
    โหมด http
    ยอดคงเหลือน้อยที่สุด
# http-keep-alive: * 1 *
    ตัวเลือก http-keep-alive
    หมดเวลา http-keep-alive 15,000
    ตัวเลือกที่ต้องการเซิร์ฟเวอร์สุดท้าย
    ตัวเลือกการจัดส่งซ้ำ
    ไม่มีตัวเลือก httpclose
    ตัวเลือก http-tunnel
    หมดเวลาเชื่อมต่อ 4000
    หมดเวลาเซิร์ฟเวอร์ 50,000
    หมดเวลา http-request 50,000
    หมดเวลาคิว 50,000
    ลองใหม่ 3

    server normal_port 192.168.58.12:50877 weight 1 maxconn 10000 check inter 60000 ขึ้น 2 ตก 3 ที่มา 192.168.58.13

# ddsds ไม่มีผลลัพธ์
ส่วนหน้า admin_page
    ผูก 127.0.0.1:64741
    โหมด http
    เปิดใช้งานสถิติ
    สถิติรีเฟรช 10 วินาที
    สถิติ uri /stats

ไฟล์กำหนดค่าในโหมด TCP:

#1,5
# ซีพียู 11
ทั่วโลก
    บันทึก 127.0.0.1 local0
    แม็กซ์คอน 200000
    nbproc 11
    แผนที่ซีพียู 1 0
    แผนผังซีพียู 2 1
    แผนผังซีพียู 3 2
    แผนผังซีพียู 4 3
    แผนผังซีพียู 5 4
    แผนผังซีพียู 6 5
    แผนที่ซีพียู 7 6
    แผนที่ซีพียู 8 7
    แผนที่ซีพียู 9 8
    แผนที่ซีพียู 10 9
    แผนที่ซีพียู 11 10
    ไอดี 0
    กิด 0
    โครต /tmp
    pidfile /var/run/haproxy.pid
    ซ็อกเก็ตสถิติ /var/run/haproxy.stat โหมด 600 ผู้ดูแลระบบระดับ
    สถิติผูกกระบวนการ 1
    ภูต
# แก้จุดบกพร่อง
#   เงียบ

ค่าเริ่มต้น
    เข้าสู่ระบบทั่วโลก
    รูปแบบบันทึก HASTATS:::%{+Q}o:::client_ip=%ci:::client_port=%cp:::datetime_of_request=[%tr]:::frontend_name_transport=%ft:::backend_name=%b :::server_name=%s:::time_to_receive_full_request=%TR:::Tw=%Tw:::Tc=%Tc:::response_time=%Tr:::active_time_of_request=%Ta:::status_code=%ST: ::bytes_read=%B:::captured_request_cookie=%CC:::captured_response_cookie=%CS:::termination_state_with_cookie_status=%tsc:::actconn=%ac:::feconn=%fc:::beconn=%bc:: :srv_conn=%sc:::รีเควส=%rc:::srv_queue=%sq:::backend_queue=%bq:::captured_request_headers_default_style=%hr:::captured_response_headers_default_style=%hs:::server_ip=%si::: server_port=%sp:::frontend_name=%f:::http_method=%HM:::http_request_uri_without_query=%HP:::http_request_query_string=%HQ:::http_request_uri=%HU:::bytes_uploaded=%U:::ssl_ciphers =%sslc:::ssl_version=%sslv:::%[capture.res.hdr(0)]
    โหมด http
    ตัวเลือก dontlognull
    ลองใหม่ 3
    ตัวเลือกการจัดส่งซ้ำ
    แม็กซ์คอน 200000
    หมดเวลาเชื่อมต่อ 5,000
    ลูกค้าหมดเวลา 50,000
    หมดเวลาเซิร์ฟเวอร์ 50,000

ส่วนหน้า ddsds
    ผูก :3128 ชื่อ ddsds
    จับภาพส่วนหัวของคำขอ Host len ​​1024
    จับภาพส่วนหัวของคำขอ Content-Type len 1024
    จับส่วนหัวคำขอ User-Agent len ​​1024
    จับส่วนหัวของคำขอผู้อ้างอิง len 1024
    ส่วนหัวคำขอจับภาพ X-Forwarded-For len 1024
    จับส่วนหัวการตอบสนอง Content-Type len 1024
    จับภาพคุกกี้ Cookie_2 เลนส์ 100
    http-request set-header mode mode:tcp
    http-ขอจับภาพ hdr(mode) len 10
    โหมด tcp
    ตัวเลือก httplog
    ตัวเลือก dontlognull
    ตัวเลือก http-tunnel
    ลูกค้าหมดเวลา 15,000
    หมดเวลา http-request 50,000
    หมดเวลาคิว 50,000

    default_backend default_ddsds

แบ็กเอนด์ default_ddsds
    โหมด tcp
    ยอดคงเหลือน้อยที่สุด
    ตัวเลือก http-tunnel
    หมดเวลาเชื่อมต่อ 4000
    หมดเวลาเซิร์ฟเวอร์ 50,000
    หมดเวลา http-request 50,000
    หมดเวลาคิว 50,000
    ลองใหม่ 3

    server normal_port 192.168.58.12:50877 weight 1 maxconn 10000 check inter 60000 ขึ้น 2 ตก 3 ที่มา 192.168.58.13

# ddsds ไม่มีผลลัพธ์
ส่วนหน้า admin_page
    ผูก 127.0.0.1:64741
    โหมด http
    เปิดใช้งานสถิติ
    สถิติรีเฟรช 10 วินาที
    สถิติ uri /stats

ใครก็ได้ช่วยฉันแก้ไขปัญหานี้ที

ขอบคุณล่วงหน้า.

Steffen Ullrich avatar
se flag
ฉันไม่รู้ว่าคุณคาดหวังอะไรที่นี่ HTTPS มีการประมวลผลที่เข้มข้นกว่า HTTP โดยเฉพาะอย่างยิ่งสำหรับการจับมือ TLS เริ่มต้นด้วยการแลกเปลี่ยนคีย์
c4f4t0r avatar
nl flag
http ของคุณทดสอบโดยใช้ keep-alive หรือไม่
mw flag
สวัสดี การทดสอบความเครียดอยู่ภายใต้ HTTP ไม่ใช่ HTTPS นอกจากนี้ ปัญหาจะเกิดขึ้นเฉพาะเมื่อกำหนดค่า Haproxy ในโหมด TCP โดยที่โหมด HTTP ใช้งานได้ ฉันสามารถใช้ Keep-alive ในโหมด TCP ได้หรือไม่
jp flag
ฉันสงสัยว่า `ส่วนหัวของคำขอแคปเจอร์` ในโหมด `http` นั้นต้องการการติ๊ก CPU เพิ่มเติม
mw flag
สวัสดี ปัญหาเกิดขึ้นเฉพาะใน TCP ใน HTTP ก็โอเค ไม่มีปัญหาเกี่ยวกับซีพียู
mw flag
ฉันได้ลบส่วนหัวของการจับภาพแล้วและผลลัพธ์ก็เหมือนเดิม ใน http ที่มีการเชื่อมต่อ 20k, การใช้ cpu 18% และโหลด 2, ใน TCP ที่มีการเชื่อมต่อเพียง 10k, การใช้ cpu 90% และโหลด 8
mw flag
สวัสดี กรุณาปรับปรุงใด ๆ เกี่ยวกับเรื่องนี้

โพสต์คำตอบ

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