Messen der Serverbandbreite

Messen der Serverbandbreite

Ich möchte die Bandbreite meines in Python implementierten Remailer-Servers messen, das heißt, ich möchte messen, wie viele Bytes mein Server pro Sekunde verarbeitet. Ich habe vor, das folgendermaßen zu tun: Für einen festgelegten Zeitraum (zum Beispiel 300sec) messe ich die Anzahl von received bytesund sent bytes. Nach diesem Zeitraum berechne ich das Verhältnis: bytes_received / bytes_sent. Ich bin mir jedoch nicht sicher, ob das das ist, was ich will, da es mir ein Verhältnis gibt (das normalerweise bei 1-1,5 liegt). Das bedeutet, dass ich alle oder fast alle Nachrichten verarbeite, die ich in einem bestimmten Zeitraum erhalten habe, aber ich möchte messen, wie viele Bytes ich verarbeitet habe. Ich wäre sehr dankbar, wenn mir jemand einen Rat geben könnte, wie ich meine Bandbreite messen kann.

Antwort1

Ich denke, Sie müssen Folgendes tun:

Empfangene Bytes= bytes_received300s - bytes_received0s

Gesendete Bytes= bytes_sent300s - bytes_sent0s

insgesamt verarbeitete Bytes= empfangene Bytes - gesendete Bytes

Dadurch erhalten Sie die Gesamtzahl der während des 300er-Zeitraums verarbeiteten Bytes.

Antwort2

Sie können psutil.net_io_counters() verwenden, um die Bandbreite über einen bestimmten Zeitraum zu berechnen. Sie erstellen einen Snapshot bei 0 Sekunden und einen Snapshot bei 300 Sekunden.

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

verwandte Informationen