サーバー帯域幅の測定

サーバー帯域幅の測定

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

関連情報