Maison Opération et maintenance exploitation et maintenance Linux Introduction détaillée sur la façon de vérifier le nombre de connexions simultanées et l'état de la connexion de Nginx sous Linux

Introduction détaillée sur la façon de vérifier le nombre de connexions simultanées et l'état de la connexion de Nginx sous Linux

Jun 07, 2017 am 10:34 AM

Linux Vérifiez le nombre de connexions simultanées et le statut de connexion de Nginx, etc.

1. Vérifiez le nombre de requêtes simultanées du serveur web (Nginx Apache) et son état de connexion TCP :

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
Copier après la connexion

ou :

netstat - n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'Le résultat renvoyé est généralement le suivant suit :

LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30 
ESTABLISHED 1597 (正常数据传输状态) 
FIN_WAIT1 51 
FIN_WAIT2 504 
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)
Copier après la connexion

Autres descriptions de paramètres :

FERME : Aucune connexion n'est active ou en cours

LISTFR : Le serveur est en attente appels entrants

SYN_RECV : Une demande de connexion est arrivée, en attente de confirmation

SYN_SENT : L'application a démarré, ouvrant une connexion

ESTABLISHED : Statut de transfert de données normal

FIN_WAIT1 : L'application indique qu'elle est terminée.

FIN_WAIT2 : L'autre partie a accepté de libérer

ITMED_WAIT : Attendez que tous les groupes meurent

CLOSING : Les deux côtés tentent de fermer en même temps

TIME_WAIT : L'autre côté a initialisé une version

LAST_ACK : En attente que tous les paquets meurent

Les trois les états couramment utilisés sont : ESTABLISHED signifie communiquer, TIME_WAIT signifie fermeture active et CLOSE_WAIT signifie fermeture passive.

Le protocole TCP stipule que pour une connexion établie, les deux parties sur le réseau doivent effectuer une négociation à quatre pour réussir la déconnexion. Si l'une de ces étapes est manquante, la connexion sera dans un état d'animation suspendue, et les ressources occupées par la connexion elle-même ne seront pas libérées. Le programme serveur réseau doit gérer un grand nombre de connexions en même temps, il est donc nécessaire de s'assurer que les connexions inutiles sont complètement déconnectées, sinon un grand nombre de connexions mortes gaspilleront beaucoup de ressources du serveur. Parmi les nombreux états TCP, il existe deux états les plus remarquables : CLOSE_WAIT et TIME_WAIT.

TIME_WAIT

TIME_WAIT est formé lorsque le lien est activement fermé, en attendant un temps de 2MSL, environ 4 minutes. Principalement pour éviter la perte du dernier ACK. Étant donné que TIME_WAIT prendra très longtemps, le serveur devrait essayer de réduire le nombre de connexions actives fermées

CLOSE_WAIT

CLOSE_WAIT est formé en fermant passivement les connexions. Selon la machine à états TCP, lorsque le serveur reçoit le FIN envoyé par le client, il envoie un ACK selon l'implémentation TCP, il entre donc dans l'état CLOSE_WAIT. Cependant, si le serveur n'exécute pas close(), il ne pourra pas migrer de CLOSE_WAIT vers LAST_ACK et il y aura de nombreuses connexions à l'état CLOSE_WAIT dans le système. À ce moment-là, il se peut que le système soit occupé à traiter les opérations de lecture et d'écriture et n'ait pas fermé la connexion qui a reçu FIN. À ce stade, recv/read a reçu le socket de connexion FIN et renverra 0.

Pourquoi avons-nous besoin de l'état TIME_WAIT ?

En supposant que l'ACK final est perdu, le serveur renverra le FIN. Le client doit conserver les informations d'état TCP afin que l'ACK final puisse être renvoyé, ce qui entraînera la réflexion du serveur. qu'une erreur s'est produite. Les implémentations TCP doivent terminer de manière fiable les deux sens de la connexion (duplex intégral fermé) et le client doit entrer dans l'état TIME_WAIT car le client peut être confronté à la retransmission de l'ACK final.

Pourquoi l'état TIME_WAIT doit-il rester 2MSL pendant si longtemps ?

Si l'état TIME_WAIT n'est pas maintenu assez longtemps (par exemple, moins de 2MSL), la première connexion se terminera normalement. Une deuxième connexion apparaît avec le même quintuple associé, et des paquets en double de la première connexion arrivent, interférant avec la deuxième connexion. L'implémentation TCP doit empêcher les messages en double d'une certaine connexion d'apparaître après la fin de la connexion, donc gardez l'état TIME_WAIT suffisamment longtemps (2MSL), et les messages TCP dans la direction correspondante de la connexion recevront une réponse complète ou seront rejetés. Il n'y a aucune confusion lors de l'établissement de la deuxième connexion.

Trop de sockets dans les statuts TIME_WAIT et CLOSE_WAIT

S'il y a une exception dans le serveur, 89% du temps ce sera les deux situations suivantes :

1. Le serveur maintient un grand nombre de statuts TIME_WAIT

2. Le serveur maintient un grand nombre de statuts CLOSE_WAIT . .

Parce que le handle de fichier alloué à un utilisateur par Linux est limité, et si les deux états de TIME_WAIT et CLOSE_WAIT sont toujours maintenus, cela signifie que le nombre de canaux correspondant sera toujours occupé, et ce sera " occupé."Aucun effort", une fois la limite supérieure du nombre de handles atteinte, les nouvelles requêtes ne peuvent pas être traitées, suivies d'un grand nombre d'exceptions Too Many Open

Files, et Tomcat plante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle configuration de l'ordinateur est requise pour VScode Quelle configuration de l'ordinateur est requise pour VScode Apr 15, 2025 pm 09:48 PM

Vs Code Système Exigences: Système d'exploitation: Windows 10 et supérieur, MacOS 10.12 et supérieur, processeur de distribution Linux: minimum 1,6 GHz, recommandé 2,0 GHz et au-dessus de la mémoire: minimum 512 Mo, recommandée 4 Go et plus d'espace de stockage: Minimum 250 Mo, recommandée 1 Go et plus d'autres exigences: connexion du réseau stable, xorg / wayland (Linux) recommandé et recommandée et plus

VScode ne peut pas installer l'extension VScode ne peut pas installer l'extension Apr 15, 2025 pm 07:18 PM

Les raisons de l'installation des extensions de code vs peuvent être: l'instabilité du réseau, les autorisations insuffisantes, les problèmes de compatibilité système, la version de code vs est trop ancienne, un logiciel antivirus ou des interférences de pare-feu. En vérifiant les connexions réseau, les autorisations, les fichiers journaux, la mise à jour vs du code, la désactivation des logiciels de sécurité et le redémarrage du code ou des ordinateurs, vous pouvez progressivement dépanner et résoudre les problèmes.

Comment exécuter le code Java dans le bloc-notes Comment exécuter le code Java dans le bloc-notes Apr 16, 2025 pm 07:39 PM

Bien que le bloc-notes ne puisse pas exécuter directement le code Java, il peut être réalisé en utilisant d'autres outils: à l'aide du compilateur de ligne de commande (Javac) pour générer un fichier bytecode (filename.class). Utilisez l'interpréteur Java (Java) pour interpréter ByteCode, exécuter le code et sortir le résultat.

Peut-on utiliser pour mac Peut-on utiliser pour mac Apr 15, 2025 pm 07:36 PM

VS Code est disponible sur Mac. Il a des extensions puissantes, l'intégration GIT, le terminal et le débogueur, et offre également une multitude d'options de configuration. Cependant, pour des projets particulièrement importants ou un développement hautement professionnel, le code vs peut avoir des performances ou des limitations fonctionnelles.

Comment utiliser vscode Comment utiliser vscode Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCODE) est un éditeur de code Open Source, Open Source et gratuit développé par Microsoft. Il est connu pour son léger, l'évolutivité et le support pour une large gamme de langages de programmation. Pour installer VScode, veuillez visiter le site officiel pour télécharger et exécuter l'installateur. Lorsque vous utilisez VSCODE, vous pouvez créer de nouveaux projets, modifier le code, déboguer le code, naviguer dans les projets, développer VSCODE et gérer les paramètres. VScode est disponible pour Windows, MacOS et Linux, prend en charge plusieurs langages de programmation et fournit diverses extensions via Marketplace. Ses avantages incluent le léger, l'évolutivité, le support linguistique étendu, les fonctionnalités riches et la version

Quel est le but principal de Linux? Quel est le but principal de Linux? Apr 16, 2025 am 12:19 AM

Les principales utilisations de Linux comprennent: 1. Système d'exploitation du serveur, 2. Système intégré, 3. Système d'exploitation de bureau, 4. Environnement de développement et de test. Linux excelle dans ces domaines, offrant des outils de stabilité, de sécurité et de développement efficaces.

Comment vérifier l'adresse de l'entrepôt de Git Comment vérifier l'adresse de l'entrepôt de Git Apr 17, 2025 pm 01:54 PM

Pour afficher l'adresse du référentiel GIT, effectuez les étapes suivantes: 1. Ouvrez la ligne de commande et accédez au répertoire du référentiel; 2. Exécutez la commande "git Remote -v"; 3. Affichez le nom du référentiel dans la sortie et son adresse correspondante.

Tutoriel d'utilisation des terminaux VScode Tutoriel d'utilisation des terminaux VScode Apr 15, 2025 pm 10:09 PM

Le terminal intégré VScode est un outil de développement qui permet d'exécuter des commandes et des scripts au sein de l'éditeur pour simplifier le processus de développement. Comment utiliser la borne VScode: ouvrez le terminal avec la touche de raccourci (CTRL / CMD). Entrez une commande ou exécutez le script. Utilisez des raccourcis clavier (tels que Ctrl L pour effacer le terminal). Modifiez le répertoire de travail (comme la commande CD). Les fonctionnalités avancées incluent le mode de débogage, l'achèvement de l'extrait de code automatique et l'historique des commandes interactives.

See all articles