Назад | Перейти на главную страницу

Высокопроизводительный процессор Haproxy «nbproc 2»

У меня было 95% загрузки ЦП с одним процессом haproxy, поэтому я переключился на nbproc 2.

У меня есть два интерфейса и два сервера; Я прикрепил 1 интерфейс и 1 серверную часть к процессу 1, а оставшиеся два - к процессу 2. Я ожидал, что нагрузка на ядра ЦП будет распределяться в зависимости от нагрузки групп внешнего интерфейса / внутреннего интерфейса, однако теперь у меня есть два процесса haproxy. , один использует 20% ЦП, другой все еще использует 95% ЦП. Почему так?

Я еще не отключаю соединения, но буду, когда начну использовать еще больше ЦП в этом одном потоке.

Конфигурация следующая:

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

Я только что пошел по тому же пути, включив несколько процессов для haproxy. На основании информации Вот, похоже, что по умолчанию ядро ​​Linux унаследовало процесс сродства ЦП от родительского процессора, который по умолчанию использует тот же ЦП. Я считаю, что вы увидите разницу, если сопоставите каждый процесс с конкретным процессором с помощью cpu-map:

nbproc 2
cpu-map 1 0
cpu-map 2 1