2 votes

Erreurs de connexion tcp/ip

Nous avons un serveur web avec 128 Go de mémoire principale, 32 vCPUs sur Ubuntu 16.04. Il exécute les applications nginx, php-fpm, postgresql, mysql et beanstalkd.

Le serveur web présente des erreurs de connexion à partir de différentes applications lorsqu'il reçoit un trafic à haut débit. En temps normal, tout va bien.

Postgresql :

 [PDOException]
  SQLSTATE[08006] [7] could not connect to server: Connection timed out
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

Mysql :

 [PDOException]
  SQLSTATE[HY000] [2002] Connection timed out

Beanstalkd :

fwrite(): send of 8192 bytes failed with errno=32 Broken pipe

Quels paramètres du serveur (sysctl.conf peut-être) affectent ces limites ? Comment puis-je augmenter ces limites pour éviter les erreurs ?

0voto

Citizen Kepler Points 222

Ahoy, Si vous avez beaucoup de connexions sur ce serveur, vous pouvez commencer à surveiller le nombre de connexions sur le serveur hôte. Si vous dépassez la limite que le noyau Linux a intégrée pour le nombre de connexions autorisées, vous risquez de voir des échecs de connexion aux heures de pointe. Dans le journal du noyau, vous pouvez voir des lignes telles que

nf_conntrack: table full, dropping packet

Pour voir la limite du nombre de connexions :

sysctl net.ipv4.netfilter.ip_conntrack_max

Pour voir le nombre de connexions actuelles

wc -l /proc/net/ip_conntrack

Si vous voyez que les connexions de courant atteignent la limite, cela expliquerait le problème. Vous pouvez essayer d'augmenter la limite via la commande ci-dessous, mais le noyau choisit généralement un nombre basé sur le matériel sur lequel il fonctionne, et si la limite est augmentée au-delà de ce que le matériel peut gérer, cela peut également entraîner la rupture des connexions établies lorsque de nouvelles connexions sont allouées.

Pour augmenter cette limite (non conservée d'un redémarrage à l'autre)

sysctl -w net.ipv4.netfilter.ip_conntrack_max=12000

Alternativement, ajoutez la ligne suivante au fichier /etc/sysctl.conf pour conserver ce paramètre lors des redémarrages :

net.ipv4.netfilter.ip_conntrack_max=12000

Je recommande les outils de conntrack fournis par http://conntrack-tools.netfilter.org/

sudo apt-get install conntrack 

Cet outil vous permettra de voir la liste des connexions (-L), le compteur (-C), et les statistiques incluant les paquets abandonnés (-S).

Lien utile : https://www.cyberciti.biz/faq/ip_conntrack-table-ful-dropping-packet-error/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X