Meça a largura de banda do servidor

Meça a largura de banda do servidor

Quero medir a largura de banda do meu servidor remailer implementado em Python, o que significa que quero medir quantos bytes meu servidor está processando por segundo. Então, como eu planejava fazer isso: por um período fixo de tempo (por exemplo 300sec), estou medindo o número de received bytese sent bytes. Após esse período de tempo calculo a proporção: bytes_received / bytes_sent. No entanto, não tenho certeza se é isso que quero, porque me dá uma proporção (que geralmente fica em torno de 1 a 1,5), o que significa que processo todas ou quase todas as mensagens que recebi em algum período de tempo, mas Quero medir quantos bytes processei. Ficarei muito grato se alguém puder me aconselhar como posso medir minha largura de banda.

Responder1

Acho que o que você precisa é fazer isso:

bytes_recebidos= bytes_recebidos300s - bytes_recebidos0s

bytes_enviados= bytes_enviados300s - bytes_enviados0s

total_bytes_processados= bytes_recebidos - bytes_enviados

Isso lhe daria o número total de bytes processados ​​durante o período de 300s.

Responder2

Você pode usar psutil.net_io_counters() para calcular a largura de banda durante um período de tempo. Você tirará um instantâneo em 0 segundos e um instantâneo em 300 segundos.

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

informação relacionada