Haproxy Il est nécessaire de redémarrer chaque 2 les heures

J'ai installé deux serveurs sélectionnés haproxy, Distribuer la charge sur trois serveurs d'applications. Je fixe l'équilibre habituel http 80, ainsi que spécial pour travailler avec des sockets Web.

Ça marche bien 2 heures, mais après cela devient très lent, le chargement de page prend environ 30 secondes. Quand je redémarre haproxy, Encore une fois tout est en ordre.

En dessous de ma conf. Il y a des idées, quelle pourrait être la raison de cela?

global
user haproxy
group haproxy

defaults
mode http
timeout connect 5s
timeout client 5s
timeout server 60s
stats enable
stats auth aa:bb

frontend proxy
# listen on 80
bind 0.0.0.0:80

# allow for many connections, with long timeout
maxconn 200000 # total maximum connections, check ulimit as well
timeout client 24h

# default to webapp backend
default_backend webapp

# is this a socket io request?
acl is_websocket hdr_end(host) -i node.domain.com
use_backend websocket if is_websocket

backend webapp
balance roundrobin # assuming that you don't need stickiness
# allow client connections to linger for 5s
# but close server side requests to avoid keeping idle connections
option httpchk HEAD /check.txt HTTP/1.0
option http-server-close
option forwardfor

server app1 x.y.149.133:80 cookie app1 weight 10 check
server app2 x.y.149.134:80 cookie app2 weight 15 check
server app3 x.y.149.135:80 cookie app3 weight 15 check

backend websocket
balance source

# options
option forwardfor # add X-Forwarded-For

# Do not use httpclose (= client and server
# connections get closed), since it will close
# Websockets connections
no option httpclose

# Use "option http-server-close" to preserve
# client persistent connections while handling
# every incoming request individually, dispatching
# them one after another to servers, in HTTP close mode
option http-server-close
option forceclose

server app1 x.y.149.133:3000 cookie app1 weight 10 check
server app2 x.y.149.134:3000 cookie app2 weight 15 check
server app3 x.y.149.135:3000 cookie app3 weight 15 check
Invité:

Alice

Confirmation de:

Qui distingue généralement les sockets Web de votre équilibrage quotidien de charge http, C'est donc ce que vous obtenez un grand nombre de connexions simultanées par rapport au taux d'arrivée. C'est une différence importante dans les systèmes, donc si vous n'êtes pas clair, regardez
https://serverfault.com/a/345446/2561
.

Donc quel que soit votre problème, je suppose qu'il se produit lorsque vous atteignez un certain seuil.

Connexions simultanées

. Voici ma meilleure hypothèse basée sur les informations fournies par vous:

Les sockets Web internes contiennent 3 Serveur. L'équilibrage de la charge communique avec tout d'une adresse IP. Cela signifie que toutes les adresses IP source_port_range * destination. Cela ressemble à ceci:

[root@ny-kbrandt01 ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
[root@ny-kbrandt01 ~]# echo $(( (61000-32768) * 3 ))
84696

Ainsi, quand vous arrivez quelque part autour 84 Mille connexions, vos spécimens haproxy Nous éprouvons le manque de ports source, le chargement du processeur augmente fortement, car il fait quelque chose comme une assemblée à ordures pour trouver plus de ports source.

Si ce n'est pas le cas, je parie que c'est quelque chose dans cette allée, suivez vos connexions simultanées à l'aide de la page Statistics. haproxy Et suivez votre processeur pour mieux comprendre ce qui se passe lorsque tout ralentit.

Pour répondre aux questions, connectez-vous ou registre