Puncte:0

Utilizare ridicată a procesorului peste TCP

drapel mw

Rulez haproxy 2.4 și când haproxy este configurat în modul tcp, primesc o utilizare ridicată a procesorului.

Exemplu:

Rularea instrumentului de stres pentru a genera aproximativ 30.000 de conexiuni:

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

Utilizarea procesorului în toate procesele haproxy crește până la aproape 100%, iar sarcina este de 4+. Rularea aceluiași test în modul http.

Utilizarea procesorului este de aproximativ 10% pentru fiecare proces, iar sarcina este de 1,20.

De asemenea, încerc să folosesc nbthread în loc de nbproc, dar obțin aceleași rezultate.

De asemenea, această problemă continuă și pe haproxy 2.5

Fișier de configurare în modul HTTP:

# 1,5
# CPU(e) 11
global
    log 127.0.0.1 local0
    maxconn 200000
    nbproc 11
    cpu-map 1 0
    cpu-map 2 1
    cpu-map 3 2
    cpu-map 4 3
    cpu-map 5 4
    cpu-map 6 5
    cpu-map 7 6
    cpu-map 8 7
    cpu-map 9 8
    cpu-map 10 9
    cpu-map 11 10
    uid 0
    gid 0
    chroot /tmp
    pidfile /var/run/haproxy.pid
    socket statistici /var/run/haproxy.stat mod 600 nivel admin
    proces de legare a statisticilor 1
    demon
# depanare
#   Liniște

implicite
    jurnal global
    format de jurnal 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:::terminare_state_with_cookie_status=%tsc:::actconn=%ac:::feconn=%fc:::beconn=%bc:: :srv_conn=%sc:::retries=%rc:::srv_queue=%sq:::backend_queue=%bq:::captured_request_headers_default_style=%hr:::captured_response_headers_default_style=%hs:::server_ip 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)]
    modul http
    opțiunea dontlognull
    reîncercări 3
    reexpedierea opțiunii
    maxconn 200000
    timeout connect 5000
    timeout client 50000
    server timeout 50000

frontend ddsds
    bind :3128 nume ddsds
    antet cerere de captare Host len ​​1024
    antetul cererii de captare Content-Type len 1024
    antetul cererii de capturare User-Agent len ​​1024
    antet cerere de captare Referer len 1024
    antetul cererii de capturare X-Forwarded-For len 1024
    Captură antet răspuns Content-Type len 1024
    capture cookie Cookie_2 len 100
    http-request set-header mode mode:tcp
    http-request capture hdr(mode) len 10
    modul http
    opțiunea httplog
# http-keep-alive: * 1 *
    opțiunea http-keep-alive
    timeout http-keep-alive 15000
    opțiunea prefer-last-server
    reexpedierea opțiunii
    nicio opțiune httpclose
    opțiunea http-tunnel
    timeout client 15000
    timeout http-request 50000
    coada de timeout 50000

    default_backend default_ddsds

backend default_ddsds
    modul http
    echilibru minimumconn
# http-keep-alive: * 1 *
    opțiunea http-keep-alive
    timeout http-keep-alive 15000
    opțiunea prefer-last-server
    reexpedierea opțiunii
    nicio opțiune httpclose
    opțiunea http-tunnel
    timeout connect 4000
    server timeout 50000
    timeout http-request 50000
    coada de timeout 50000
    reîncercări 3

    server normal_port 192.168.58.12:50877 weight 1 maxconn 10000 check inter 60000 rise 2 fall 3 source 192.168.58.13

# ddsds nici un rezultat
pagina_admin frontend
    lega 127.0.0.1:64741
    modul http
    statisticile permit
    statisticile reîmprospătează 10 secunde
    stats uri /stats

Fișier de configurare în modul TCP:

# 1,5
# CPU(e) 11
global
    log 127.0.0.1 local0
    maxconn 200000
    nbproc 11
    cpu-map 1 0
    cpu-map 2 1
    cpu-map 3 2
    cpu-map 4 3
    cpu-map 5 4
    cpu-map 6 5
    cpu-map 7 6
    cpu-map 8 7
    cpu-map 9 8
    cpu-map 10 9
    cpu-map 11 10
    uid 0
    gid 0
    chroot /tmp
    pidfile /var/run/haproxy.pid
    socket statistici /var/run/haproxy.stat mod 600 nivel admin
    proces de legare a statisticilor 1
    demon
# depanare
#   Liniște

implicite
    jurnal global
    format de jurnal 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:::terminare_state_with_cookie_status=%tsc:::actconn=%ac:::feconn=%fc:::beconn=%bc:: :srv_conn=%sc:::retries=%rc:::srv_queue=%sq:::backend_queue=%bq:::captured_request_headers_default_style=%hr:::captured_response_headers_default_style=%hs:::server_ip 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)]
    modul http
    opțiunea dontlognull
    reîncercări 3
    reexpedierea opțiunii
    maxconn 200000
    timeout connect 5000
    timeout client 50000
    server timeout 50000

frontend ddsds
    bind :3128 nume ddsds
    antet cerere de captare Host len ​​1024
    antetul cererii de captare Content-Type len 1024
    antetul cererii de capturare User-Agent len ​​1024
    antet cerere de captare Referer len 1024
    antetul cererii de capturare X-Forwarded-For len 1024
    Captură antet răspuns Content-Type len 1024
    capture cookie Cookie_2 len 100
    http-request set-header mode mode:tcp
    http-request capture hdr(mode) len 10
    modul tcp
    opțiunea httplog
    opțiunea dontlognull
    opțiunea http-tunnel
    timeout client 15000
    timeout http-request 50000
    coada de timeout 50000

    default_backend default_ddsds

backend default_ddsds
    modul tcp
    echilibru minimumconn
    opțiunea http-tunnel
    timeout connect 4000
    server timeout 50000
    timeout http-request 50000
    coada de timeout 50000
    reîncercări 3

    server normal_port 192.168.58.12:50877 weight 1 maxconn 10000 check inter 60000 rise 2 fall 3 source 192.168.58.13

# ddsds nici un rezultat
pagina_admin frontend
    lega 127.0.0.1:64741
    modul http
    statisticile permit
    statisticile reîmprospătează 10 secunde
    stats uri /stats

Oricine mă poate ajuta să rezolv această problemă.

Mulțumesc anticipat.

Steffen Ullrich avatar
drapel se
Nu știu la ce te-ai așteptat aici. HTTPS necesită mult mai mult calcul decât HTTP. Acest lucru este valabil mai ales pentru strângerea de mână TLS inițială cu schimbul de chei.
c4f4t0r avatar
drapel nl
testează http folosind keep-alive?
drapel mw
Bună, testul de stres este sub HTTP, nu HTTPS. De asemenea, problema se întâmplă doar atunci când Haproxy este configurat în modul TCP, cu modul HTTP funcționează ok. Pot folosi keep-alive în modul TCP?
drapel jp
Aș bănui că toate aceste `capture request header` În modul `http` necesită câteva bifări suplimentare ale procesorului.
drapel mw
Bună, Problema apare numai în TCP, în HTTP este ok, nicio problemă cu CPU
drapel mw
Am eliminat anteturile de captură și rezultatul este același. În http cu conexiune de 20k, utilizare CPU 18% și încărcare 2, în TCP cu doar conexiune 10k, utilizare CPU 90% și încărcare 8.
drapel mw
Bună Orice actualizare in acest sens va rog.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.