Problemi a gestire molte connessioni ad un database PostgreSQL? Il front-end genera troppe richieste e la macchina db si siede? Pgpool è ciò che vi serve.
Dopo averlo testato direttamente per “alleviare” il carico di connessioni verso un db server a cui puntano 4 macchine in cluster del front-end web, e dopo aver notato la scarsità di informazioni precise ho deciso di scrivere questo breve articolo per condividere l’esperienza acquisita.
Il problema nasce dal fatto che Apache apre una connessione verso il db server per ogni sua istanza (anche se non c’è reale bisogno), quando le connessioni cominciano ad essere nell’ordine delle centinaia il db server accusa il colpo. Infatti tutte queste connessioni anche se non utilizzate (in idle) richiedono una piccola parte di cpu che moltiplicata per il gran numero di richieste diventa un valore molto elevato. Il carico della macchina quindi aumenta e le prestazioni crollano.
Pgpool viene in soccorso nelle situazioni critiche come questa mettendosi tra il front-end ed il back-end fornendo un vitale servizio di cache per le connessioni, utilizzandole e reciclandole senza aprirne continuamente di nuove. Altro servizio molto interessante è la possibilità di usare due db server in configurazione “fail over”, in caso di problemi sul primo viene eseguito uno switch automatico sul secondo. Con una configurazione del genere è possibile anche sfruttare il load balancing.
Rimando al sito ufficiale per maggiori informazioni.
Pgpool, piccolo strumento grande lavoro
Reply