GNU/Linux >> Tutoriels Linux >  >> Linux

Commande "ss" dans le package Iproute ; Pourquoi interroger la table Slab pour les sockets Timewait ?

Pardonnez-moi si ce n'est pas le meilleur forum pour cette question, mais cela semble plus pertinent pour le noyau que pour la programmation elle-même.

J'écris un script qui interroge le système pour les ports ouverts afin que nous puissions tracer et surveiller les statistiques. Pour cela, j'utilise la commande "ss" du package iproute. Si vous exécutez ss -s|grep estab vous recevrez une sortie semblable à celle-ci :

TCP:   296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0

Ma question concerne la variable timewait, qui affiche les sockets calculés dans l'état TIME_WAIT. Lorsque j'ai essayé de déterminer quel numéro était référencé après la barre oblique, la recherche du code source s'est transformée en une aventure fulgurante qui m'a finalement conduit à trouver l'extrait suivant :

printf("TCP:   %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
       s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
       sn.tcp_estab,
       s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
       s.tcp_orphans,
       slabstat.tcp_syns,
       s.tcp_tws, slabstat.tcp_tws,
       slabstat.tcp_ports
       );

Je dois admettre que ma recherche de ce que « slabstat » était censé signifier m'a finalement conduit à découvrir les caches de dalles et leur interface de création de rapports sur /proc/slabinfo.

La question :Qu'est-ce que la slabtable a à voir avec les calculs de socket TIME_WAIT ? Je n'arrive pas à comprendre pourquoi ce nombre est signalé, car chaque fois que j'exécute la commande sur tous les serveurs sur lesquels je l'ai essayée, le nombre a toujours été zéro.

Réponse acceptée :

Cela ressemble à tcp_tw_buckets est ce qui est finalement interrogé, qui est une structure supprimée à partir de Linux 2.6.12

Ainsi, le dernier nombre serait probablement toujours 0, sauf s'il s'agit de noyaux vieux de 7 ans.

Quant à l'interrogation de slab, pour autant que je sache, c'est ridiculement plus rapide que les autres méthodes disponibles.


Linux
  1. Exemples de commandes DNF pour les débutants

  2. Exemples de commandes RPM pour interroger, installer, supprimer et mettre à niveau des packages

  3. apt :commande introuvable

  4. Quel paquet dois-je installer pour utiliser les sockets de routage ?

  5. Existe-t-il un outil en ligne de commande pour la visualisation et l'analyse des données ?

Découvrez pourquoi la commande "moins" est plus rapide que la commande "plus" pour une navigation efficace dans les fichiers

12 exemples de commandes IP pour les utilisateurs Linux

Principes de base de Linux :30 exemples de commandes YUM pour la gestion des packages Linux

Exa - Un remplacement moderne pour la commande ls

Les 50 meilleurs exemples de commandes YUM pour les utilisateurs RHEL ou CentOS

Commande RPM :15 exemples pour installer, désinstaller, mettre à niveau, interroger les packages RPM