[apt] apt-test / script surveillance miroirs Debian

Tags: #<Tag:0x00007fb5bc2ee360> #<Tag:0x00007fb5bc2ee298>
Historique: de apt_perf à apt-test

Un script apt_perf a déjà été proposé début 2023 dans le sujet [apt] Dépôts Debian (qui pose des difficultés de maintenance pour raison d’ancienneté, remarque secondaire qui sera traitée plus tard)
Plutôt que de faire évoluer apt_perf un peu perdu dans cet ancien fil, je propose de l’extraire en le renommant apt-test (nom en analogie à [apt] sl-test / script d’analyse des fichiers sources apt).

apt-test


Description:

apt-test teste la performance d’accès aux miroirs Debian par chargement d’un fichier, donnant un résultat plus représentatif que d’autres outils n’analysant qu’un retour de ping, une valeur de ping n’étant pas nécessairement proportionnelle au débit de téléchargement d’un serveur.

apt-test 20260815

#!/bin/bash
# apt-test : mesure performance dépôts apt Debian fr » 20260815 «
ping -c1 -W1 example.com >/dev/null || { echo 'Réseau inaccessible'; exit 1;}
L=(debian.{proxad.net,mirrors.ovh.net,obspm.fr,polytech-lille.fr} \
 ftp.{fr.debian.org,ec-m.fr,rezopole.net,univ-pau.fr,u-picardie.fr,u-strasbg.fr} \
 ftp.lip6.fr/pub/linux/distributions {cdn-aws.,}deb.debian.org apt.tetaneutral.net \
 mirror.{abaclouda.net,gitoyen.net,debian.ikoula.com,johnnybegood.fr,plusserver.com} \
 miroir.univ-lorraine.fr cdn-fastly.deb.debian.org deb-mir1.naitways.net)

LC_ALL=C ; T0=${EPOCHREALTIME} ; n=${#L[@]} ; i=0 ; R=
for H in ${L[@]} 'sec.' ; do h=${H%%/*} ; ((i==n && i--)) ; a=down
   printf "\r\e[1;37m %-24s\e[0;32m[%2d/%2d]\e[m %-30s" 'Test sites Debian' $((++i)) $n $h
   ((${#H}==4)) && break || x=${EPOCHREALTIME}
   curl -s --connect-timeout 2.2 http://$H/debian/dists/stable/Release >/dev/null && \
   a=$(mawk -v x=$x -v y=${EPOCHREALTIME} 'BEGIN{d=y-x;if(d>2){printf ">2"}else{printf "%1.3f",d}}')
   R+="$a $h\n"
done ; echo
printf "$R" |sort| mawk '{printf "%3d  %-28s%s\n",++i,$2,$1}
 END{printf "%31s:  %3.3f\n","Temps d\x27exécution",y-x}' x=$T0 y=${EPOCHREALTIME}
exit 0


apt-test 20260811
#!/bin/bash
# apt-test : mesure performance dépôts apt Debian fr » 20260811 «
ping -c1 -W5 1.1.1.1 >/dev/null || { echo ' Réseau inaccessible'; exit 1;}
i=0 ; R=
for H in debian.{proxad.net,mirrors.ovh.net,obspm.fr,polytech-lille.fr} \
   ftp.{fr.debian.org,ec-m.fr,rezopole.net,univ-pau.fr,u-picardie.fr,u-strasbg.fr,lip6.fr/pub/linux/distributions} \
   {cdn-aws.,}deb.debian.org miroir.univ-lorraine.fr apt.tetaneutral.net ‒ ; do
   h=${H%%/*} ; ((i==15 && i--))
   printf "\r\e[1;37m %-24s\e[0;32m[$((++i))/15]\e[m %-30s" 'Test sites Debian' $h
   [ $H == ‒ ] || { ping -c1 -W2 $h >/dev/null 2>&1 && \
   R+="$((time curl -s --connect-timeout 3 http://$H/debian/dists/stable/Release{,}) 2>&1 | \
   mawk -F'm' '/^r/{print $2}') $h\n" || R+="no-ping $h\n";}
done ; echo
printf "$R" |sort| mawk '$2~/./{printf "%3d  %-28s%s\n",++i,$2,$1}'
exit
apt-test 20260808-2
#!/bin/bash
# apt-test : mesure performance dépôts apt Debian fr » 20260808-2 «
if ! ping -c1 -W5 1.1.1.1 >/dev/null; then # test accès réseau
  echo ' Réseau inaccessible'
  exit 1
fi
if ! grep -qs proxad ${l:=/dev/shm/_mirror-list} ; then
   echo ' Recherche liste miroirs Debian'
   curl -s --retry-delay 5 --retry-max-time 5 'https://www.debian.org/mirror/list' |\
   sed -n '/<tr.*Fr/,/<tr.*<hr/{/http/{/de\//d;s~.*//~~;s~".*~~;p}}' > $l
   printf "%s\n%s\n%s\n★\n" {deb,cdn-fastly.deb,cdn-aws.deb}.debian.org/debian/ >> $l
fi
P=$(mawk '/^F.*c.cron.cron_/{print $2;exit}' /var/lib/apt/lists/*main_binary*s)
n=$(mawk '{i++;next}END{print i-1}' $l); i=0 ; R=
while read H ; do ((i==n)) && i=$((--i))
  printf "\r\e[1;37m  Test sites Debian apt \e[0;32m[$((++i))/$n]\e[m %-26s" "${H%%/*}"
  ((${#H}==1)) && break
  if ping -c1 -W5 ${H%%/*} >/dev/null ; then
     R+="$((time wget -t1 -T5 --no-dns-cache http://${H}$P -O /dev/null) 2>&1 | \
         mawk -F'm|\.|,' '/^r/{printf ($2>4)?"5+":$2","$3}') ${H%%/*}\n"
    else
     R+="no-ping ${H%%/*}\n"
  fi
done < $l
printf "\n\n"
printf "$R" |sort| mawk 'BEGIN{i=1}($2!=""){printf "%3d %-28s%s\n",i++,$2,$1}'
echo
for H in {ftp.fr,deb}.debian.org
  do ping -c1 $H | mawk '{printf "%18s -> %-24s\n",h,$2;exit}' h=$H
done
exit

Exemple de sortie:

apt-test20260815

Remarque: il arrive que des miroirs Debian ne soient pas accessibles pour raisons techniques temporaires. Ce n’est donc pas parce-que le réseau global d’un PC est parfaitement fonctionnel, qu’apt ne peut pas être bloqué, ce qui conduit à de mauvaises interprétations (vu dans un sujet récent).

Avec sl-test qui teste les dépôts usagers ainsi que l’état des domaines à accéder, apt-test + sl-test sont deux outils complémentaires qui permettront une analyse sans faille d’apt dont le réseau est bloqué, alors que le réseau global ne l’est pas.


!! NOTE !!: étant blasé/saturé des intervenants qui ne peuvent s’empêcher à peine un sujet ouvert d’intervenir pour raconter ce que pense ‹ Chatgpt › ou équivalent, et de ne pas transformer rapidement ce sujet en troll ou poubelle comme on le voit parfois, merci de respecter un minimum les lieux, dans l’intérêt des usagers Debian.

1 J'aime

Bonjour,
je viens d’installer votre script, avec un comportement étrange:
si je le lance plusieurs fois de suite, une fois sur 2 (1ere, 3eme etc.) la recherche bloque sur le 13e miroir (sur 22).

J’ai aussi ajouté (ensuite, sans rapport) la ligne suivante avant exit pour rétablir les couleurs:
echo -e "\033[0m"

PS
13 mirror.abaclouda.net 0,141s

Merci de fournir une copie d’écran image de la zone de sortie de apt-test, équivalente à l’exemple du sujet (= pas une image 1920x1080), sans aucun bricolage du script.
Le script doit être lancé à partir d’un fichier exécutable, et non pas par copie dans un terminal qui embarquera les variables d’environnement personnalisées du terminal.


PS: puisque le problème n’est pas reproduit en plus de 9 jours, et que je suspecte fortement un mauvais usage du script après modification ou non lancé dans son propre environnement à partir d’un fichier, merci de supprimer le message précédent, et de reposter un nouveau message avec copie d’écran si nouveau problème.

Décidément, Dimanche: Server off-line
De nouveau ce soir:
apt-test

en adsl2 :
https://debian-facile.org/images/file-R40c4e967f63b316beabb2752280d3580

Est-ce qu’il serait possible de faire une version ADSL2 du script pour avoir tous les temps plutôt que certains temps soient collés à 5+, ce qui me semble être une version de : > 5s.

apt-test, successeur de apt_perf diffusé en février 2023.
Je n’ai jamais vu un seul problème remonté en 3 ans, mais une différence est que le fichier chargé était plus léger.
Confirmes-tu que tous les ‹ 5+ › sont aussi observés lorsque les serveurs sont bien fonctionnels ? Je m’étonne que même en ADSL2 il faille plus de 5 secondes pour charger un fichier de 350 kb.

Est-ce qu’il serait possible de faire une version ADSL2 du script pour avoir tous les temps

Ça non, il faut bien un time-out pour un site qui ne répond pas, et 5s me paraissait raisonable.
Peux-tu me dire si l’ADSL passe avec apt_perf ? Ce sera déjà une indication.

Voici le résultat d’apt-perf :
https://debian-facile.org/images/file-Re45adf7522b8ab944bfe08385484b43b

nmcli | grep server
	servers: fe80::5a98:35ff:fea1:b06c 2001:41d0:3:163::1 2001:41d0:1:e2b8::1

Comme il y a pas mal de problèmes serveurs actuellement, je diffuse ce soir une version qui permettra de voir les serveurs lors de l’initialisation [x/22].
Je ne vois pas la particularité de l’ADSL2 et comprends pas un besoin de 5s pour chargé 350 kb.
Je peux envisager une option adsl (ou réseau lent).
La version de ce soir chargera un peu plus léger (250 kb au lieu de 350).
Je propose de tester la prochaine version apt-test, et si ça ne passe pas, je rajouterais cette option ADSL.

J’ai changé la résolution DNS, dans le résultat d’avant c’était les serveurs DNS D’OVH, celui-ci passe par Cloudflare :

https://debian-facile.org/images/file-R108dfe7086e394fc7fc6efef6180c815

nmcli | grep server
	servers: 91.121.161.147 87.98.149.171
	servers: fe80::5a98:35ff:fea1:b06c 2001:41d0:3:163::1 2001:41d0:1:e2b8::1

Ha OK : problème de DNS.
On voit dans la version apt_perf que je n’avais jamais pu tester le cas de serveurs down, car jamais vu en 2023.
C’est donc la bonne période pour ajuster certains paramètres (du fine-tuning).
A voir version de ce soir.

Avec les serveurs DNS DoH de la FDN :

https://debian-facile.org/images/file-R67d3b20d7032215075a5c0de017517e5

nmcli | grep server

servers: 80.67.169.12 80.67.169.40 37.187.16.17
servers: 2001:910:800::12 2001:910:800::40`

Mais les sites graphiques ne s’affichent pas avec ces serveurs DNS ( trop d’anonymisation, peut-être ? ), juste certains téléchargements, exemple : apt

Ce fil n’a pas vocation à résoudre des problèmes spécifiques de DNS ou d’ADSL2 qui peuvent être adressés dans un autre sujet. La version apt-test suivante est dispo.

Mise à jour apt-test 20260807
Modifications:
* chaque domaine sera affiché lors de la recherche de miroirs: [X/22] debian.proxad.net
* Le fichier test de chargement passe de 350 à 250 kb.
* Les adresses IP des domaines ftp.fr.debian.org et deb.debian.org ne sont plus affichés, car intérêt limité lors de plusieurs relances (allègement sortie).

C’est incompréhensible cette mise à l’écart des serveurs de noms de domaines puisque chaque serveur de noms de domaines influe sur les résultats. En tout cas, merci, je me sers de ton script pour choisir le plus rapide des serveurs de noms de domaines chez moi qui est aussi mon fournisseur d’accès à Internet. Cette version du script me semble donner des résultats en temps plus corrects, mais je ne sais pas pourquoi cela monte à 45 sites, soit 1 + le double de 22.

https://debian-facile.org/images/file-Rf97547df134684ad564f32830be47710 OVH DNS

Je me pose la même question puisque pas reproduit chez moi. Je ne vois pas de logique immédiate. A creuser…
J’ai une idée, mais confirmes-tu que tu lances bien apt-test à partir d’un fichier exécutable ? Et non un copier/coller dans terminal ??

ls -pail apt-*
400030 -rwxrwxr-x 1 intervenant101 intervenant101  929  7 août  15:23 apt-perf.sh
414150 -rwxrwxr-x 1 intervenant101 intervenant101 1177  7 août  18:21 apt-test-20260807.sh
395023 -rwxrwxr-x 1 intervenant101 intervenant101 1083  7 août  08:12 apt-test.sh

./apt-test-20260807.sh

Tu pourrais mettre un post au sujet de ton script sur un autre forum debian francophone pour pouvoir augmenter le nombre de testeurs de ton script.

Bien mystérieux, surtout si tu es seul à observer ça.
Que dit sed -n '$=' /dev/shm/_mirror-list
ça devrait dire 23.

Oui, j’ai 23 :

sed -n ‹ $= › /dev/shm/_mirror-list
23

Il n’y a pas une mais deux choses qui me surprennent beaucoup et que je vois vraiment pas comment reproduire. En manque d’inspiration, que dit ‹ apt list bash mawk ›

apt list bash mawk
bash/stable,now 5.2.37-2+b9 amd64 [installé]
mawk/stable,now 1.3.4.20250131-1 amd64 [installé]

Je sèche. Besoin de temps pour voir comment reproduire ça. Jamais vu dans mon environnement.