gestire un carico elevato di un database postgresql

Mi sembra di avere un problema per cui un server che esegue postgresql sta riscontrando un carico piuttosto elevato con la media superiore a 30.

Questo server è in esecuzione come vm su vmware.

Quello che mi chiedo è che cosa è il modo migliore per configurare postgresql in modo che non sovraccarichi la casella.

Se wheressi gettare più risorse al VM, questo risolverà la questione o lo avrebbe semplicemente abbattuto. È solo la CPU che sta ottenendo martellata, la memory (2 GB) è sufficiente.

  • come proteggere una port PostgreSQL aperta
  • Molti processi Postgresql. come gestirli?
  • Linux si blocca each pochi secondi
  • La connessione a postgresql si blocca su tunnel SSH su OSX
  • PostgreSQL e Mongodb nella produzione
  • L'applicazione Postgres tenta di utilizzare un file socket errato
  • Ho installato più server PostgreSQL. Come posso distriggersre l'avvio automatico per un server più vecchio?
  • GRANT SELECT a tutte le tabelle in postgresql
  • 3 Solutions collect form web for “gestire un carico elevato di un database postgresql”

    Controllare che le tavole siano state aspirate correttamente. L'utilizzo elevato della CPU in un'istanza postgres è di solito un segno che esiste un numero elevato di righe eliminate nella tabella.

    Se utilizzi il vuoto automatico, controlla le statistiche della tabella per verificare che sia effettivamente in esecuzione

    'Alta carica' probabilmente meand molte domande in esecuzione in parallelo. Provare a eseguire la seguente query:

    SELECT * FROM pg_stat_activity; 

    Questo mostrerà ciò che il server sta facendo al momento. Forse puoi vedere qualcosa di sospetto qui? Una query che non dovrebbe essere chiamata spesso?

    Inoltre, per eseguire il debug di problemi di performance è molto utile impostare l'opzione log_min_duration_statement in postgresql.conf. Ciò mostrerà le query che richiedono molto tempo per eseguire. Questi sono probabilmente quelli che causano la maggior parte del carico. Di solito occorre ottimizzare una singola query difettosa (riscrivendola, aggiungendo indici o sintonizzando la configuration di PostgreSQL) per abbassare molto il carico del server.

    Non posso fornirti un file di configuration, perché la maggior parte delle impostazioni dipende dall'ambiente e il "carico elevato" non è esattamente un singolo tipo di problema. Ecco alcuni suggerimenti su come individuare i problemi relativi alle performance con PGSQL.

    Beh, prima di tutto dovrai controllare che cosa sta facendo il tuo database. Tipicamente quando si è fuggiti DB si hanno alcune query pesanti che vengono spesso eseguite. Controlla quali query eseguite e utilizza EXPLAIN ANALYZE per avere un'idea del costo di each query.

    Poi si inizia a esaminare ciò che è effettivamente il problema. Una query scritta male può assassinare le performance, ma se le query sembrano buone (e non possono essere ottimizzate), dovrai vedere se puoi rendere più facile per il DB in altri modi.

    Controllare l'output EXPLAIN per le scansioni sequenziali, soprattutto se lo fai su tavole più grandi e in più passaggi. Verifica se puoi introdurre indici che aiuteranno le tue query. EXPLAIN è lo strumento di monitoraggio generale delle performance per le query.

    Non dimenticare VACUM e ANALISI il tuo database. Molte distribuzioni distriggersno il servizio autovacum e poi wherete fare il vacum / analizzare manualmente. Potrebbero anche distriggersre la contabilità, il che rende il process di analisi molto less efficiente. Dopo aver fatto questo, tornare indietro e spiegare nuovamente per vedere se le query vengono eseguite in modo diverso.

    Se nient'altro ti aiuta, dovrai ribuild la tua struttura di database o iniziarla a distribuirla, ma la mia esperienza è che non dovrai farlo a less che non esegui un sito con un carico DB molto pesante o migliaia di utenti simultanei. Di solito si chiede che il database non riesca a recuperare in modo ottimale.

    Infine controlli http://wiki.postgresql.org/wiki/Performance_Optimization per ulteriori suggerimenti.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.