Python で実装したリメーラ サーバーの帯域幅を測定したいのですが、これはサーバーが 1 秒あたりに処理しているバイト数を測定することを意味します。そのため、次のように実行しようと計画しています。一定期間 (たとえば300sec
) にわたって、received bytes
およびの数sent bytes
を測定します。この期間が経過した後、比率 を計算します。bytes_received / bytes_sent
ただし、これが目的のものかどうかはわかりません。比率 (通常は約 1 ~ 1.5) が返されるため、一定期間に受信したすべてのメッセージまたはほぼすべてのメッセージを処理していることになりますが、処理したバイト数を測定したいのです。帯域幅を測定する方法についてアドバイスをいただければ幸いです。
答え1
必要なのはこれだと思います:
受信バイト数= 受信バイト数300 - 受信バイト数0
送信バイト数= 送信バイト数300 - 送信バイト数0
処理された合計バイト数= 受信バイト数 - 送信バイト数
これにより、300 秒の期間中に処理されたバイトの合計数がわかります。
答え2
psutil.net_io_counters() を使用すると、一定期間の帯域幅を計算できます。0 秒と 300 秒のスナップショットを取得します。
def get_bandwidth():
# Get net in/out
net1_out = psutil.net_io_counters().bytes_sent
net1_in = psutil.net_io_counters().bytes_recv
time.sleep(300) # Not best way to handle getting a value 300 seconds later
# Get new net in/out
net2_out = psutil.net_io_counters().bytes_sent
net2_in = psutil.net_io_counters().bytes_recv
# Compare and get current speed
if net1_in > net2_in:
current_in = 0
else:
current_in = net2_in - net1_in
if net1_out > net2_out:
current_out = 0
else:
current_out = net2_out - net1_out
network = {"traffic_in": current_in, "traffic_out": current_out}
# Return data in bytes
return network