測量伺服器頻寬

測量伺服器頻寬

我想測量我在 Python 重郵伺服器中實現的頻寬,這意味著我想測量我的伺服器每秒處理多少位元組。所以我計劃如何做到這一點是:在固定的時間段內(例如),我正在測量和300sec的數量。經過這段時間,我計算出比率:。但是,我不確定這就是我想要的,因為它給了我一個比率(通常約為 1-1.5),所以這意味著我處理在一段時間內收到的所有或幾乎所有訊息,但是我想測量我處理了多少位元組。如果有人可以建議我如何測量我的頻寬,我將非常感激。received bytessent bytesbytes_received / bytes_sent

答案1

我認為你需要做的是:

收到的位元組數= bytes_received300s - bytes_received0s

已發送位元組數= 發送的位元組數300s - 發送的位元組數0s

已處理的總位元組數= 收到的位元組數 - 發送的位元組數

這將為您提供 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

相關內容