問題タブ [bandwidth-throttling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Git でトリクルを使用する
トリクルを使用して単純な git pull を調整したいと思います。これは簡単なように思えますtrickle -d 100 git pull
が、git が帯域幅レートを表示すると、まだ 3.3 MiB/s 前後で推移しており、想定される最大値である 1000 KB/s をはるかに上回っています。
トリクルが 8 年間更新されていないように見えることにがっかりしていますが、それでもこの問題を解決できることを願っています。
役立つと思われるその他のランダムな情報:
- フェドラ20
trickle -V
:trickle: version 1.07
git --version
:git version 1.9.0
- も使っ
hub
ていますが、ハブ有りと無しで試しました。違いはわかりません。 - 私はzshを使用しています。
ip addr
:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:2e:5f:86:4b:8b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.142/24 brd 192.168.1.255 scope global dynamic em1
valid_lft 64050sec preferred_lft 64050sec
inet6 2601:d:b700:679:a2e:5fff:fe86:4b8b/64 scope global noprefixroute dynamic
valid_lft 216580sec preferred_lft 216580sec
inet6 fe80::a2e:5fff:fe86:4b8b/64 scope link
valid_lft forever preferred_lft forever
3: wlo1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 4c:80:93:a0:d7:14 brd ff:ff:ff:ff:ff:ff
もちろん、それ以外の情報も喜んで提供します。ありがとうございました。
java - Java でネットワーク帯域幅を制限する
次のことを行う必要があります。
1. Find the current network bandwidth.
2. Limit the bandwidth to download the file by 50%.
これについていくつかの調査を行いましたが、これを行う良い方法を見つけることができません。
しばらくデータを送信し、それに対していくつかの演算を行って帯域幅を計算するようなものです。
より良いアプローチがあるかどうか疑問に思っていましたか?これには余分な時間がかかるため (データの送受信 + 帯域幅の計算)。ダウンロード要求が来るたびに、何度も何度もやりたくありません。
language-agnostic - リクエストを自発的に調整する
Webクローラー/スクレーパーを作成する場合、リクエストを抑制し、サーバーのDoS攻撃/禁止を回避するために利用できるアルゴリズムと手法は何ですか? これは、Webスクレイピングについて読むときによく出てきますが(たとえば、ここ)、常に「スロットリングを実装する必要がありましたが、実装していませんでした」のようなものです:)
サーバー側でリクエストを調整する方法についての議論がほとんどで、他のもの (この質問など) は一部のライブラリに固有のものであるため、私の Google-fu は弱い可能性があります。
c++ - WinHTTP API で帯域幅の使用を制限する方法
この記事の最後にあるような C++ コードで WinHTTP API を使用しています。Windows サービスから実行され、バックグラウンドで更新をダウンロードするために使用されます。コードは問題なく動作しますが、アップデートをダウンロードするときに、コードがクライアント コンピュータで使用可能な帯域幅を使いすぎるという苦情が寄せられています。
それらの WinHTTP API を作成する方法、特に使用する帯域幅を制限する方法はありWinHttpQueryDataAvailable
ますWinHttpReadData
か? たとえば、利用可能な帯域幅の最大 30% です。
PS。参照しやすいように、 MSDN の記事から参照しているコードをコピーします。
編集:@RemyLebeauの提案をフォローアップしながら、上記の方法で使用される現在のダウンロード速度を計算し、「スリープ」APIを使用してそれ自体を調整しようとするテストC++プロジェクト(ここからダウンロードできます)を作成しました。残念ながら、私が得た結果はまったく予想外のものです。スクリーンショットを作成しました:
私の読書とタスク マネージャーが私に与えているものとの違いを見てください。(これらのテストを実行していた時点では、何も帯域幅を使用していないことに注意してください。)
私は何かが欠けているに違いない。問題は何ですか?
c# - 特定の帯域幅調整要件に使用できる API は何ですか?
次のことを実現するために使用できる API を知る必要があります。
- Windows マシン (アプリケーション A と呼びます) で実行されている既存のプロセスがあります。これは、この Windows マシン上の既存のプロセスである可能性があります。
- A の帯域幅使用量を調整する別のアプリケーションをコーディングしたいと考えています (アプリケーション B と呼びます)。
- B は、A の累積的なアップロード速度とダウンロード速度を別々に調整できるはずです。たとえば、A に最大 5 Kbps のアップロードが割り当てられている場合、A のすべてのアップロード ストリームは累積量 5 Kbps に制限されます。
私の要件:
- カーネル モード ドライバーを使用できません。
- これをユニバーサル ソリューションにする必要があるため、B はシステム上の他のプロセスを抑制できます (つまり、A のソース コードを変更することはできません)。
特にStack Overflowでこれを調査しようとしましたが、私の場合に役立つものは何も見つかりませんでした:
- 使用時にスロットリングを導入する Stream オブジェクトの周りに ThrottledStream クラス ラッパーを使用するこの例を見てきましたが、これをユニバーサル アプリケーションにする必要があるため、このアプローチを使用することはできません (A のソース コードを変更することはできません)。 .
- Windows Filtering Platform API の使用について誰が答えているかというこの質問を見てきました。残念ながら、カーネル モード ドライバーを使用してこれを実現することは絶対にできないという要件があり、私の理解では、WFP API にはカーネル モード ドライバーが必要です。
BがAの帯域幅使用量を調整するために、特定の帯域幅調整要件にどのAPIを使用できるか知っている人はいますか?