J'avais une utilisation de 95% du CPU avec un seul processus haproxy, j'ai donc changé pour nbproc 2
.
J'ai deux frontends et deux backends ; j'ai épinglé 1 frontend et 1 backend au processus 1, et j'ai épinglé les deux autres au processus 2. Je m'attendais à ce que la charge sur les cœurs de CPU soit distribuée en fonction de la charge des groupes frontend/backend, mais j'ai maintenant deux processus haproxy, l'un utilisant 20% de CPU, l'autre utilisant toujours 95% de CPU. Pourquoi en est-il ainsi ?
Je ne suis pas encore en train d'abandonner des connexions, mais je le ferai lorsque je commencerai à utiliser encore plus de CPU sur ce fil.
La configuration est la suivante :
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