Python: misurare le prestazioni di un sito web

Python: misurare le prestazioni di un sito web

Misurare le metriche di risposta di un indirizzo web è essenziale per comprendere le prestazioni e la disponibilità di un sito. In questo articolo, esploreremo come utilizzare Python per raccogliere dati dettagliati sulle prestazioni di un sito web, comprese la latenza, la disponibilità e altre metriche chiave. Utilizzeremo diverse librerie Python per eseguire queste operazioni, tra cui requests, time, statistics, e matplotlib per la visualizzazione dei dati.

Prima di iniziare, assicurati di avere installato Python e le seguenti librerie:


pip install requests matplotlib

Per misurare la latenza della risposta di un sito web, possiamo utilizzare la libreria requests per inviare una richiesta HTTP e misurare il tempo impiegato per ottenere una risposta.


import requests
import time

def measure_latency(url, num_requests=10):
    latencies = []
    for _ in range(num_requests):
        start_time = time.time()
        response = requests.get(url)
        latency = time.time() - start_time
        latencies.append(latency)
        print(f'Response status: {response.status_code}, Latency: {latency:.4f} seconds')
    return latencies

url = "https://www.example.com"
latencies = measure_latency(url)

Dopo aver raccolto i dati sulla latenza, possiamo analizzarli per ottenere informazioni utili come la media, la deviazione standard e i percentili.


import statistics

def analyze_latencies(latencies):
    mean_latency = statistics.mean(latencies)
    median_latency = statistics.median(latencies)
    stdev_latency = statistics.stdev(latencies)
    percentile_90_latency = statistics.quantiles(latencies, n=100)[89]
    
    print(f'Mean latency: {mean_latency:.4f} seconds')
    print(f'Median latency: {median_latency:.4f} seconds')
    print(f'Standard deviation: {stdev_latency:.4f} seconds')
    print(f'90th percentile latency: {percentile_90_latency:.4f} seconds')
    
analyze_latencies(latencies)

Per una migliore comprensione delle prestazioni del sito web, è utile visualizzare i dati raccolti. Utilizzeremo matplotlib per creare grafici.


import matplotlib.pyplot as plt

def plot_latencies(latencies):
    plt.figure(figsize=(10, 6))
    plt.plot(latencies, marker='o')
    plt.title('Website Latency Over Time')
    plt.xlabel('Request Number')
    plt.ylabel('Latency (seconds)')
    plt.grid(True)
    plt.show()

plot_latencies(latencies)

Oltre alla latenza, è importante monitorare la disponibilità del sito web. Possiamo farlo registrando lo stato delle risposte HTTP.


def monitor_availability(url, num_requests=10):
    availability = []
    for _ in range(num_requests):
        response = requests.get(url)
        availability.append(response.status_code == 200)
        print(f'Response status: {response.status_code}')
    uptime = sum(availability) / num_requests * 100
    print(f'Uptime: {uptime:.2f}%')

monitor_availability(url)

Conclusione

Misurare le metriche di risposta di un indirizzo web è un compito fondamentale per garantire che il sito web offra una buona esperienza utente. Utilizzando Python e le librerie requests, time, statistics e matplotlib, possiamo raccogliere, analizzare e visualizzare i dati di prestazione del sito web in modo efficace. Questo ci permette di identificare e risolvere eventuali problemi di prestazioni, migliorando la disponibilità e la velocità del sito.

Seguendo i passaggi descritti in questo articolo, sarai in grado di implementare un sistema di monitoraggio delle prestazioni per qualsiasi sito web, ottenendo così una visione dettagliata delle sue metriche di risposta.

Torna su