Je n'ai pas de solution simple et rapide à vous proposer, mais j'ai une idée qui devrait au moins fonctionner. Tout d'abord, je vais énumérer quelques points triviaux que vous devriez vérifier - je suppose que vous les avez déjà faits, mais cela ne fait pas de mal d'être sûr. Vous n'avez pas mentionné le système d'exploitation que vous utilisez, mais comme il ne s'agit pas d'Ubuntu, je suppose qu'il s'agit de Windows. Si ce n'est pas le cas, modifiez les détails de cette solution pour votre système d'exploitation (par exemple, au lieu de PowerShell, utilisez bash ou autre, remplacez les utilitaires par des équivalents, etc.)
Tests simples
- Assurez-vous que vous n'avez pas un logiciel installé et configuré à dessein pour limiter la vitesse de téléchargement, comme NetLimiter.
- Vérifier l'utilisation du réseau de tous les processus en cours comme l'a suggéré atype et vérifier que tout est faible.
- Exécuter
tracert
pour voir si le blocage est vraiment interne (et non, par exemple, dans votre routeur). Vous avez dit que vous pouviez obtenir de bonnes vitesses vers votre NAS (ce qui rend moins probable qu'il s'agisse d'un problème interne), donc peut-être qu'il y a un autre point dans votre itinéraire qui étouffe votre bande passante pour une raison ou une autre.
Test compliqué pour trouver le coupable Processus/Service
Cela nécessite un peu de codage, mais pas trop.
En gros, l'idée est de suspendre tous les processus/services en cours, un par un, et de voir si votre vitesse de téléchargement s'améliore. Pour ce faire, vous devez utiliser l'API Windows, comme le montre l'exemple suivant aquí (il suffit de changer le GetDiskFreeSpaceW
à la fonction dont vous avez besoin).
Processus
- Lister tous les processus en cours avec Obtenir un processus .
-
Bouclez sur la liste et pour chaque processus :
-
Vérifiez qu'il ne s'agit pas du processus exécutant le script en comparant à $pid
(il se peut que vous deviez également vérifier les processus parents/ancêtres ; je n'en suis pas sûr).
-
Suspendre le processus à l'aide de l'option DebugActiveProcess
Fonction de l'API Windows. En outre, la fonction de l'API Windows peut être utilisée dans le cadre d'un projet de recherche, este peut s'avérer utile.
-
Attendre quelques secondes est probablement une bonne idée, mais il est possible de sauter cette étape.
-
Le processus étant maintenant désactivé, testez votre bande passante de téléchargement. J'ai trouvé cette page avec quelques exemples sur la façon de faire cela dans PowerShell, et ceci semble être la façon la plus simple :
$a=Get-Date; Invoke-WebRequest http://client.akamai.com/install/test-objects/10MB.bin|Out-Null; "$((10/((Get-Date)-$a).TotalSeconds)*8) Mbps"
Vous pouvez également essayer d'utiliser ce test de vitesse script ; il est en Python, vous devriez donc pouvoir l'exécuter sur un autre système d'exploitation si vous en avez besoin.
-
Si la bande passante dépasse le seuil que vous souhaitez (par exemple, 1 Mbps ; décidez vous-même), ce processus limite votre vitesse de téléchargement. Imprimez son nom ou l'ID du processus, ou autre, et arrêtez la boucle.
-
Reprendre le processus en invoquant le DebugActiveProcessStop de l'API Windows.
Services
Il est possible que ce qui limite votre vitesse de téléchargement soit un service et non un processus. Dans ce cas, vous pouvez faire la même chose que ce que j'ai suggéré pour les processus, mais vous devez utiliser des fonctions API différentes ( Suspendre le service y Service de CV ) et vous n'avez pas besoin de vérifier que vous ne vous suspendez pas vous-même (puisque le script n'est pas un service).
Mises en garde
Il peut y avoir des processus et des services critiques du système que vous devriez éviter d'arrêter, et que vous ne pouvez peut-être même pas arrêter. Dans le premier cas, vous devrez établir une liste d'exclusions, et dans le second, vous devrez tenir compte du fait que vos appels à l'API peuvent échouer (en fait, vous devriez le faire de toute façon, et peut-être imprimer un avertissement lorsque cela se produit et continuer).
Je sais que tout cela représente plus de travail que vous ne l'espériez, mais c'est la meilleure idée que j'ai pour vous. J'espère qu'elle vous aidera à résoudre votre problème.