서버 대역폭 측정

서버 대역폭 측정

Python 리메일러 서버에 구현된 대역폭을 측정하고 싶습니다. 즉, 서버가 초당 처리하는 바이트 수를 측정하고 싶습니다. 그래서 제가 계획한 방법은 고정된 기간 동안(예 : ) 및 300sec의 수를 측정하는 것 입니다 . 이 기간이 지나면 비율을 계산합니다 . 그러나 이것이 내가 원하는 것인지 확실하지 않습니다. 왜냐하면 비율(보통 1-1.5 정도)을 제공하기 때문입니다. 즉, 일정 기간 동안 받은 모든 메시지 또는 거의 모든 메시지를 처리한다는 의미입니다. 내가 처리한 바이트 수를 측정하고 싶습니다. 누군가 내 대역폭을 측정하는 방법을 조언해 줄 수 있다면 매우 감사하겠습니다.received bytessent bytesbytes_received / bytes_sent

답변1

내 생각에 당신에게 필요한 것은 다음과 같습니다.

바이트_수신= bytes_received300s - bytes_received0s

bytes_sent= bytes_sent300s - bytes_sent0s

total_bytes_processed= 바이트_수신 - 바이트_전송

이는 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

관련 정보