104 votes

Comment limiter la bande passante des programmes sous Windows ?

Existe-t-il une technique dans Windows qui permet de limiter sélectivement la bande passante d'un processus en cours d'exécution ?

26voto

Tim Points 219

Yo uso Net Limiter qui dispose d'une version gratuite, mais malheureusement, vous devrez payer pour la fonction de limitation. .

NetLimiter est un outil ultime de contrôle et de surveillance du trafic Internet conçu pour Windows. Vous pouvez utiliser NetLimiter pour fixer des limites de taux de transfert en amont et en aval pour des applications ou même une seule connexion et surveiller leur trafic Internet.

En plus de cette fonction unique, Netlimiter offre un ensemble complet d'outils statistiques Internet. Il comprend la mesure du trafic en temps réel et des statistiques à long terme sur le trafic Internet par application.

12voto

zaTricky Points 298

Il y a de bonnes raisons d'envisager l'approche du "routeur tourné vers l'Internet" pour la gestion d'un réseau dans son ensemble - cependant, comme la question initiale était spécifique et que l'utilisateur peut très bien être le seul ordinateur du réseau, c'est une préoccupation secondaire.

NetBalancer


Selon l'une des autres réponses, j'ai testé pendant un certain temps NetBalancer . Il fonctionne très bien - et est facile à configurer.

NetBalancer est disponible à l'achat sur leur page web pour environ 50 $. La version d'essai/gratuite vous permet de surveiller les connexions, mais ne permet pas l'étranglement.

NetLimiter


L'alternative est NetLimiter . Il dispose d'un période d'essai gratuite - mais commence à ~$20 pour la version Lite ou ~$30 pour la version Pro. NetLimiter est l'application de référence éprouvée pour de nombreux administrateurs système.

Lorsque la période d'essai de NetLimiter prend fin, jusqu'à ce que vous achetiez une licence, il devient un outil de surveillance uniquement - et ne prend plus en charge l'étranglement. Cela peut encore être utile - mais pas pour ce cas d'utilisation.

Utilisation d'un routeur (avec une explication de la raison pour laquelle ce n'est pas une bonne approche pour ce cas d'utilisation).


Bien que l'utilisation d'un routeur intelligent/hautement configurable soit généralement la meilleure approche pour holistique gestion du réseau, la déconnexion entre cela et la question originale n'est pas expliquée dans les autres réponses. La question initiale porte spécifiquement sur un processus, qu'un routeur n'a aucun moyen d'identifier de manière fiable.

La seule variante qui puisse être utile à cet égard est celle où une application ne communique que par un canal spécifique ou un type de trafic qui peut être facilement identifié par le routeur. L'exemple ci-dessous montre comment les téléchargements d'origine d'EA fonctionnaient à un moment donné :

Origin utilise actuellement Akamai. En général, je configure les téléchargements/mises à jour automatiques pour qu'ils s'exécutent à tout moment, mais je préférerais qu'ils n'utilisent pas toute la capacité de la ligne pendant que je suis occupé à faire d'autres choses plus importantes. Il se trouve qu'Origin est très mauvais à l'adresse ce trier de chose Il ne prend donc pas en charge les programmes de téléchargement ou l'étranglement des téléchargements. Actuellement, mon ordinateur télécharge un jeu en utilisant le serveur "a1750.d.akamai.net". Un routeur MikroTik (un exemple de routeur intelligent) peut prendre note que ce nom DNS a été utilisé (il sera dans le cache DNS avec une adresse IP) et peut être configuré temporairement pour ajouter l'adresse IP du serveur de destination à une "liste d'adresses". Tout le trafic vers/depuis la liste d'adresses peut être ajouté à une file d'attente étranglée, ce qui, techniquement, limite une seule application.

L'approche ci-dessus est cependant naïve. L'EA pourrait à tout changer le nom du serveur, le protocole utilisé, ou un autre service sans rapport avec l'infrastructure d'Akamai pourrait être étranglé par inadvertance. Maintenant, ma règle est inutile et cassée ou, pire, elle étrangle quelque chose qui n'a rien à voir.

11voto

Pink Whale Points 39

Vous pouvez utiliser la stratégie de groupe Windows pour limiter la bande passante de tout processus. Allez-y :

  • Menu Démarrer > Exécuter > gpedit.msc
  • Configuration ordinateur/utilisateur (choisissez l'un ou l'autre) > Paramètres Windows > QoS basée sur des stratégies

Ici, vous pouvez voir les politiques actuelles et en créer de nouvelles :

  • Soit en faisant un clic droit sur "Policy-based QoS", soit en allant dans "Action" > Créer une nouvelle politique...
  • Suivez ensuite l'assistant pour créer une nouvelle politique d'étranglement.

L'assistant vous permet de créer une politique pour limiter la bande passante pour l'un ou l'autre :

  • Tout ce qui se trouve sur votre ordinateur
  • Processus spécifiques
  • Sites web spécifiques (uniquement pour les applications utilisant le protocole HTTP)

Et vos politiques peuvent ensuite être filtrées par :

  • Protocoles TCP ou UDP
  • IP source/destination
  • Ports source/destination

Vous pouvez également créer ces politiques dans Powershell en courant :

New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB

Bien que cela puisse nécessiter des droits d'administrateur, et il semble y avoir un bug où les politiques créées de cette manière n'apparaîtront pas dans l'interface graphique.

8voto

bebbo Points 281

Voici mon étranglement du pauvre homme :

Il ne s'agit pas exactement de limiter la bande passante, mais plutôt de suspendre/reprendre le processus de consommation de la bande passante et de libérer ainsi de la bande passante pour d'autres applications. Et c'est gratuit !

Vous devez PsSuspend.exe (Je mets ce fichier dans C:\tools\sysinternals ) et un fichier batch (par exemple) slow.bat :

@echo off
:START 
c:\tools\sysinternals\pssuspend.exe %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
c:\tools\sysinternals\pssuspend.exe -r %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
goto START

Maintenant, ouvrez une ligne de commande en tant qu'administrateur et exécutez le fichier batch avec le programme throttles comme paramètre

slow.bat filetransfer.exe

(remplacez filetransfer.exe par le nom de votre programme)

Si vous avez terminé, appuyez sur CTRL-C et annulez le lot.

Si le programme est toujours en cours d'exécution, pensez à reprendre le programme au cas où vous auriez interrompu le lot alors que le programme était suspendu :

c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe

(remplacez filetransfer.exe par le nom de votre programme)

5voto

bebbo Points 281

Vous pouvez utiliser TMeter Free à partir de http://www.tmeter.ru/en/ .

Les nombreuses étapes de la configuration de l'étranglement peuvent être trouvées, par exemple, ici : https://www.howtogeek.com/347711/how-to-limit-any-applications-bandwidth-on-Windows/

Le résumé est le suivant :

  1. Sélectionnez la carte réseau à utiliser dans "Interfaces réseau".
  2. Ajouter une définition de processus pour le programme à lancer
  3. Ajouter un jeu de filtres avec une règle pour le processus défini
  4. Activez la mise en forme du trafic de la limite de vitesse pour ce jeu de filtres et appliquez-la.
  5. Cliquez sur "Démarrer/arrêter la capture" pour activer/désactiver l'étranglement.

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