Haproxy “nbproc 2” CPU alta

2

Eu tive 95% de uso da CPU com um único processo haproxy, então mudei para nbproc 2 .

Eu tenho dois frontends e dois backends; Eu prendi 1 frontend e 1 backend ao processo 1 e prendi os dois restantes ao processo 2. Esperei que a carga nos núcleos da CPU fosse distribuída com base na carga dos grupos frontend / backend, no entanto, agora tenho dois processos haproxy , um usando 20% da CPU, o outro ainda usando 95% da CPU. Por que esse é o caso?

Eu ainda não estou descartando conexões, mas serei quando começar a usar ainda mais CPU nesse segmento.

A configuração é a seguinte:

global
    nbproc 2
    maxconn 150000
    user root # haproxy
    group root # haproxy
    daemon
    stats socket /var/run/haproxy.sock group haproxy mode 775

defaults
    mode tcp
    timeout connect 5000ms
    timeout client 130s
    timeout server 130s

frontend http-in
    bind-process 2
    bind *:80
    mode http
    maxconn 40000

    acl host_typea hdr(host) -i typea.example.com
    acl host_typeb hdr(host) -i www.example.com

    use_backend typea-backend if host_typea
    use_backend typeb-backend if host_typeb

    default_backend typeb-backend

frontend proxy-customers-frontend
    bind-process 1
    bind *:20000
    maxconn 10000
    option httpclose
    mode http
    log global
    acl host_typec hdr(proxy-authorization) -m len gt 80
    use_backend typec-backend if host_typec

    default_backend typed-backend

backend typea-backend
    bind-process 2
    mode http
    balance url_param ip check_post

    server localhost-30000 127.0.0.1:30000 check
    server localhost-30001 127.0.0.1:30001 check
    server localhost-30002 127.0.0.1:30002 check
    server localhost-30003 127.0.0.1:30003 check
    server localhost-30004 127.0.0.1:30004 check
    server localhost-30005 127.0.0.1:30005 check
    server localhost-30006 127.0.0.1:30006 check
    server localhost-30007 127.0.0.1:30007 check

backend typeb-backend
    bind-process 2
    mode http
    option forwardfor
    server localhost-81 127.0.0.1:81 check

backend typec-backend
    bind-process 1
    mode http
    server localhost-19999 127.0.0.1:19999 check

backend typed-backend
    bind-process 1
    mode http

    server localhost-20001 127.0.0.1:20001 check
    server localhost-20002 127.0.0.1:20002 check
    server localhost-20003 127.0.0.1:20003 check
    server localhost-20004 127.0.0.1:20004 check
    server localhost-20005 127.0.0.1:20005 check
    server localhost-20006 127.0.0.1:20006 check
    server localhost-20007 127.0.0.1:20007 check
    server localhost-20008 127.0.0.1:20008 check
    
por Rytis 13.05.2016 / 13:40

1 resposta

2

Acabei de começar uma estrada semelhante com a ativação de vários processos para o haproxy. Com base nas informações aqui , parece que o comportamento padrão do kernel do Linux é que os processos herdam a CPU afinidade do pai, que seria o padrão para a mesma CPU. Eu acredito que você verá uma diferença se você mapear cada processo para uma CPU específica com cpu-map:

nbproc 2
cpu-map 1 0
cpu-map 2 1
    
por 15.05.2017 / 18:27

Tags