SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
TUNING




             TUNING – Ottimizzazione risorse interne


27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 1
Postgresql.conf


  Il file postgresql.con è il file con cui si 
  gestiscono la maggior parte delle configurazioni
  Circa 200 configurazioni in totale
  Possono essere raggruppate in 10 categorie
  Analazzeremo le principali caratteristiche del 
  file postgresql.conf 




27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 2
Postgresql.conf

   File Locations
   Connections and Authentication
   Resource Usage
   WAL and Checkpoints
   Query Tuning
   Error and Reporting and Logging
   Statistics
   Locale & Formatting
   Lock Management
   Maintenance

27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 3
File locations

   data_directory(string) :  è la directory usata per lo storage dei 
   dati.



   hba_file (string) : speficica il path verso il file pg_hba.conf 



   ident_file (string) : specifica il path verso il file pg_ident.conf



   external_pid_file (string) :   crea una ulteriore copia del process 
   ID. Può essere utilizzata dai tools di amministrazione che hanno 
   bisogno di una copia del process ID.




 27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 4
Connections and Authentication
   listen_addresses (string) : specifica gli indirizzi ip sui quali il server 
   si  aspetta  le  connessione  dal  client.  '*'  imposta in  ingresso  qualsiasi 
   rete  → da impostare solo su macchine di sviluppo.



   port  (integer)  :  imposta  la  porta  TCP  sulla  quale  postgresql  è  in 
   ascolto.



   max_connections  (integer)  :  imposta  il  numero  massimo  delle 
   connessioni che postgresql può essere in grado di accettare. 



   superuser_reserved_connections (integer) : imposta il numero di 
   connessioni riservate all'utente  PostgreSQL superuser.




 27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 5
max_connections
                                            Il numero massimo al momento 
                                            dell'installazione  viene  stabilito 
                                            dal comando initdb in base alle 
                                            possibilità  che  il  volstro  kernel 
                                            offre.

                                            All'aumentare  del  numero  max 
                                            di  connessioni  aumenta  il 
                                            numero  di  risorse  di  sistema 
                                            utilizzate.

                                            Qualora        il            vostro 
                                            max_connection sia >= 1000 si 
                                            consigli   di      utilizza     un 
                                            programma  di  pool  delle 
                                            connessioni.

                                       Qualora  il  vostro  sistema  non 
                                       supporti  dei  valori  di  default 
                                       molto  bassi    è  necessario 
                                       ritoccare  qualcosa  a  livello  di 
 http://developer.postgresql.org/pgdocs/postgres/kernel­resources.html
                                       kernel di macchina.
27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 6
Connections and Authentication

    bonjour_name (string) : imposta il messaggio di broadcast.



    authentication_timeout (integer) : imposta in secondi il tempo 
    massimo richiesto al client per completare la propria autenticazione



    Ssl (boolean) : Abilita le connessioni ssl.



    password_encryption (boolean) :  Quando viene creato un utente 
    in SQL attraverso CREATE USER o ALTER USER senza passare il 
    parametro ENCRIPTED o UNENCRYPTED, questo parametro 
    determina se la password deve essere criptata o no.




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 7
Un po' di internals

                                                 Considerazioni sulla 
                                                 perfomance


                                                      Ottimizzare l'utilizzo 
                                                      delle risorse del sistema 
                                                      (CPU, Memoria, Dischi)


                                                      Ottimizzare le queries 
                                                      inviate al database: 
                                                           CREATE INDEX
                                                           VACUUM
                                                           CLUSTER
                                                           EXPLAIN 


 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 8
Un po' di internals

                                                  In questa sede 
                                                  parleremo di come 
                                                  ottimizzare le risorse 
                                                  del server DBMS, 
                                                  vediamo ora i livelli di 
                                                  memoria:
                                                       Registri cpu
                                                       Cache cpu
                                                       Kernel cache (RAM)
                                                       Dischi




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 9
Un po' di internals


                                                 All'aumentare del 
                                                 prezzo diminuisce la 
                                                 capacità della 
                                                 memoria. Tipicamente:


                                                      Registri cpu : bytes
                                                      Cache cpu : Kb / Mb
                                                      RAM : Mb/Gb
                                                      Dischi : Gb/Tb




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 10
Un po' di internals



                                           Il  passaggio  di  dati  tra  i  vari 
                                           stadi  della  memoria  avviene 
                                           costantemente  in  un  server,  lo 
                                           swap  tra  i  registri  CPU  e  la 
                                           cache  di  CPU  non  possono 
                                           essere  gestiti  dal  DBA,  mentre 
                                           invece  è  possibile  il  tuning  tra 
                                           RAM e dischi.




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 11
Un po' di internals

                                                 Un server PostgreSQL 
                                                 possiede:
                                                      Programmi in 
                                                      esecuzione
                                                      Dati e stack
                                                      Shared buffer cache
                                                      Kernel disk buffer cache
                                                      kernel




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 12
Un po' di internals – Shared Buffer Cache

      PostgreSQL  non  cambia  direttamente  le 
      informazioni  su  un  disco  ma  le  scrive  sullo  shared 
      buffer cache le informazioni vengono prelevate:
            Dal disk buffer cache
            Direttamente dal disco




      I  processi  di  backend  accedono  allo  shared_buffer 
      e se ad esempio bisogna effettuare un processo di 
      lettura allora la lettura avviene tutta in RAM. 




 27/11/08     /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                               page 13
Un po' di internals – Shared Buffer Cache




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 14
Un po' di internals – Shared Buffer Cache




COME DEVE ESSERE DIMENSIONATO LO SHARED BUFFER?




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 15
Un po' di internals – Shared Buffer Cache
       Lo shared buffer deve avere la giusta dimensione 
       per consentire agli altri programmi di girare senza 
       intoppi.
       Se lo shared buffer è troppo grande, allora il 
       sistema operativo inizierà il processo di swap per 
       richiedere memoria per gli altri programmi in 
       esecuzione




                           RALLENTAMENTO



 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 16
Un po' di internals – Shared Buffer Cache

       Altro parametro importante: work_mem
            Specifica l'insieme totale di memoria non shared 
            RAM  usata per le operazioni interne di ordinamento 
            e tabelle di hash prima di passarle ai file 
            temporanei.




 27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 17
Resource Usage ­ Memory

  shared_buffers (integer) : imposta la quantità totale di 
  memoria usata dai buffers della shared memory.
       E' una quantità di memoria definita come una RAM dedicata per 
       Postgresql, usata per il controllo delle connessioni, esecuzione di 
       operazioni e altro.
       Postgresql necessita anche di RAM per la gestione dei buffer file 
       system, ordinamento etc.. per cui shared_buffers non può essere 
       maggiore della RAM di sistema.
       32 Mb di default
       Deve essere almeno 128 Kb e almeno 16K*max_connections
       > 2Gb supportata solo per sistemi a 64 bits
       Incrementare shared_buffers → aumentare molto probabilmente 
       alcuni parametri del KERNEL SHMMAX e SHMALL.
       http://www.postgresql.org/docs/current/static/kernel­
       resources.html
27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 18
Resource Usage ­ Memory

   work_mem (integer) : Specifica l'insieme totale di 
   memoria non shared RAM  usata per le operazioni 
   interne di ordinamento e tabelle di hash prima di 
   passarle ai file temporanei.
           Per una query complessa con ORDER BY, DISTINCT, MERGE 
           JOINS in parallelo, è possibile che si superi il valore work_mem 
           prima che il sistema inizi a depositare I dati su files temporanei 
           cosicchè la quantità di memoria utilizzata potrebbe essere di 
           molte volte superiore la work_mem.
           Questo limite ha il compito di non far andare andare il server in 
           swap.
           La work_mem è allocata per multipli di potenze di 2
           Il suo valore di default è 1Mb



27/11/08      /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                               page 19
Tunning


      Come impostare il giusto valore?  (B. Momjian)
           Per impostare il giusto valore conviene iniziare con il 25% 
           della RAM totale per quanto riguarda lo shared_buffer e 
           con il 2% ­  4%  della RAM totale per quanto riguarda la 
           work_mem.
           Aumentare i valori se il sistema non va in swap
           Diminuire i valori se il sistema va in swap. 




27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 20
Resource Usage ­ Memory

     temp_buffers (integer) : Imposta il numero 
     massimo di buffers temporanei usati per ogni 
     sessione del database.
           Una sessione può allocare buffer temporanei come da lei 
           richiesto fino alla quantità massima indicata da 
           temp_buffers.
           Il valore di default può essere aumentato se la vostra 
           applicazione usa pesantemente temporary tables.
           Default 8Mb




27/11/08     /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 21
Resource Usage ­ Memory

   max_prepared_transactions (integer) : Imposta il 
   massimo numero di transaction che possono essere 
   simultaneamente nello stato “prepared”. 
           Vedi PREPARED TRANSACTION
           Il valore 0 disabilità questa feature : se l'applicazione non usa 
           PREPARED TRANSACTION si può tranquillamente disabilitare
           Qualora si utilizzi questa feature il valore consigliato è un valore 
           pari quello di max_connection
           Default 5




27/11/08       /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                                page 22
Resource Usage ­ Memory

     maintenance_work_mem (integer) : Imposta la 
     quantità totale di memoria utilizzata per le 
     operazioni di amministrazioni del database 
     VACUUM, CREATE INDEX, ALTER TABLE ADD 
     FOREIGN KEY.
           Per ogni sessione una sola può essere eseguita una solo 
           di queste operazioni → E' buona norma avere un valore 
           molto maggiore di work_mem per migliorare le 
           performance di vacuum e restore.
           Default 16 Mb




27/11/08     /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 23
Resource Usage ­ Memory

      max_stack_depth (integer) : Imposta la profondità 
      massima dello stack in Kb.
           Default 2 Mb
           Di solito va bene così
           Aumentare lo stack significativamente può comportare 
           che una funzione ricorsiva può provocare il crash del  
           singolo processo server in questione.
           E' raccomandabile non modificare questo valore.




27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 24

Contenu connexe

Tendances

PostgreSQL: Point in time recovery
PostgreSQL: Point in time recoveryPostgreSQL: Point in time recovery
PostgreSQL: Point in time recoveryEnrico Pirozzi
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileIvan Rossi
 
Sottoli in the cloud
Sottoli in the cloudSottoli in the cloud
Sottoli in the clouddema
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleMajong DevJfu
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneFulvio Corno
 
Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberryMarco Buttolo
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017MongoDB
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumateMarco Buttolo
 
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...Claudio Cardinali
 
Raspberry omv
Raspberry omvRaspberry omv
Raspberry omvPipperss
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioMongoDB
 

Tendances (20)

PostgreSQL: Point in time recovery
PostgreSQL: Point in time recoveryPostgreSQL: Point in time recovery
PostgreSQL: Point in time recovery
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
 
Sottoli in the cloud
Sottoli in the cloudSottoli in the cloud
Sottoli in the cloud
 
Compilazione Kernel
Compilazione KernelCompilazione Kernel
Compilazione Kernel
 
The Google File System
The Google File SystemThe Google File System
The Google File System
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
 
Slax su pendrive
Slax su pendriveSlax su pendrive
Slax su pendrive
 
Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberry
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
Hadoop in action!
Hadoop in action!Hadoop in action!
Hadoop in action!
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
 
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
 
Socket python
Socket pythonSocket python
Socket python
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernelLUG - Ricompilazione kernel
LUG - Ricompilazione kernel
 
Raspberry omv
Raspberry omvRaspberry omv
Raspberry omv
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Messa in rete
Messa in reteMessa in rete
Messa in rete
 

En vedette

PostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e lockingPostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e lockingEnrico Pirozzi
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziareDaniele Mondello
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)Giuliano Latini
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb PgTraining
 
PostgreSQL: Approximated searches
PostgreSQL: Approximated searchesPostgreSQL: Approximated searches
PostgreSQL: Approximated searchesEnrico Pirozzi
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)PgTraining
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzionegiacomos
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentalsmvetro
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerRoberto Messora
 

En vedette (10)

PostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e lockingPostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e locking
 
PostgreSQL
PostgreSQL PostgreSQL
PostgreSQL
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb
 
PostgreSQL: Approximated searches
PostgreSQL: Approximated searchesPostgreSQL: Approximated searches
PostgreSQL: Approximated searches
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 

Similaire à PostgreSQL : Tuning

Elaborazione automatica dei dati: calcolatore e matlab
Elaborazione automatica dei dati: calcolatore e matlabElaborazione automatica dei dati: calcolatore e matlab
Elaborazione automatica dei dati: calcolatore e matlabprofman
 
MySQL 5
MySQL 5MySQL 5
MySQL 5jekil
 
Struttura dell'elaboratore (sample)
Struttura dell'elaboratore (sample)Struttura dell'elaboratore (sample)
Struttura dell'elaboratore (sample)Parco nord.
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 
Jvm performance Tuning
Jvm performance TuningJvm performance Tuning
Jvm performance TuningMarco Sabatini
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàImplementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàAlfredo Parisi
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Codemotion
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterMatteo Baccan
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheAndrea Dottor
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device DriversFabio Nisci
 

Similaire à PostgreSQL : Tuning (20)

Assemblare un pc
Assemblare un pcAssemblare un pc
Assemblare un pc
 
Elaborazione automatica dei dati: calcolatore e matlab
Elaborazione automatica dei dati: calcolatore e matlabElaborazione automatica dei dati: calcolatore e matlab
Elaborazione automatica dei dati: calcolatore e matlab
 
MySQL 5
MySQL 5MySQL 5
MySQL 5
 
Cesvip 20110127
Cesvip 20110127Cesvip 20110127
Cesvip 20110127
 
Struttura dell'elaboratore (sample)
Struttura dell'elaboratore (sample)Struttura dell'elaboratore (sample)
Struttura dell'elaboratore (sample)
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
DHow2 - L5
DHow2 - L5DHow2 - L5
DHow2 - L5
 
Cpu
CpuCpu
Cpu
 
Cpu Abacus
Cpu AbacusCpu Abacus
Cpu Abacus
 
Cpu abacus
Cpu abacusCpu abacus
Cpu abacus
 
Jvm performance Tuning
Jvm performance TuningJvm performance Tuning
Jvm performance Tuning
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàImplementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilità
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
Battaglia Navale
Battaglia NavaleBattaglia Navale
Battaglia Navale
 
Cluster Domino "two is mei che one"
Cluster Domino "two is mei che one"Cluster Domino "two is mei che one"
Cluster Domino "two is mei che one"
 
Modulo 1 - Lezione 2
Modulo 1 - Lezione 2Modulo 1 - Lezione 2
Modulo 1 - Lezione 2
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
 
Foundation server
Foundation serverFoundation server
Foundation server
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
 

Dernier

Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxlorenzodemidio01
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereMarco Chizzali
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 

Dernier (16)

Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 

PostgreSQL : Tuning

  • 1. TUNING TUNING – Ottimizzazione risorse interne 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 1
  • 2. Postgresql.conf Il file postgresql.con è il file con cui si  gestiscono la maggior parte delle configurazioni Circa 200 configurazioni in totale Possono essere raggruppate in 10 categorie Analazzeremo le principali caratteristiche del  file postgresql.conf  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 2
  • 3. Postgresql.conf File Locations Connections and Authentication Resource Usage WAL and Checkpoints Query Tuning Error and Reporting and Logging Statistics Locale & Formatting Lock Management Maintenance 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 3
  • 4. File locations data_directory(string) :  è la directory usata per lo storage dei  dati. hba_file (string) : speficica il path verso il file pg_hba.conf  ident_file (string) : specifica il path verso il file pg_ident.conf external_pid_file (string) :   crea una ulteriore copia del process  ID. Può essere utilizzata dai tools di amministrazione che hanno  bisogno di una copia del process ID. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 4
  • 5. Connections and Authentication listen_addresses (string) : specifica gli indirizzi ip sui quali il server  si  aspetta  le  connessione  dal  client.  '*'  imposta in  ingresso  qualsiasi  rete  → da impostare solo su macchine di sviluppo. port  (integer)  :  imposta  la  porta  TCP  sulla  quale  postgresql  è  in  ascolto. max_connections  (integer)  :  imposta  il  numero  massimo  delle  connessioni che postgresql può essere in grado di accettare.  superuser_reserved_connections (integer) : imposta il numero di  connessioni riservate all'utente  PostgreSQL superuser. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 5
  • 6. max_connections Il numero massimo al momento  dell'installazione  viene  stabilito  dal comando initdb in base alle  possibilità  che  il  volstro  kernel  offre. All'aumentare  del  numero  max  di  connessioni  aumenta  il  numero  di  risorse  di  sistema  utilizzate. Qualora  il  vostro  max_connection sia >= 1000 si  consigli  di  utilizza  un  programma  di  pool  delle  connessioni. Qualora  il  vostro  sistema  non  supporti  dei  valori  di  default  molto  bassi    è  necessario  ritoccare  qualcosa  a  livello  di  http://developer.postgresql.org/pgdocs/postgres/kernel­resources.html kernel di macchina. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 6
  • 7. Connections and Authentication bonjour_name (string) : imposta il messaggio di broadcast. authentication_timeout (integer) : imposta in secondi il tempo  massimo richiesto al client per completare la propria autenticazione Ssl (boolean) : Abilita le connessioni ssl. password_encryption (boolean) :  Quando viene creato un utente  in SQL attraverso CREATE USER o ALTER USER senza passare il  parametro ENCRIPTED o UNENCRYPTED, questo parametro  determina se la password deve essere criptata o no. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 7
  • 8. Un po' di internals Considerazioni sulla  perfomance Ottimizzare l'utilizzo  delle risorse del sistema  (CPU, Memoria, Dischi) Ottimizzare le queries  inviate al database:  CREATE INDEX VACUUM CLUSTER EXPLAIN  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 8
  • 9. Un po' di internals In questa sede  parleremo di come  ottimizzare le risorse  del server DBMS,  vediamo ora i livelli di  memoria: Registri cpu Cache cpu Kernel cache (RAM) Dischi 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 9
  • 10. Un po' di internals All'aumentare del  prezzo diminuisce la  capacità della  memoria. Tipicamente: Registri cpu : bytes Cache cpu : Kb / Mb RAM : Mb/Gb Dischi : Gb/Tb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 10
  • 11. Un po' di internals Il  passaggio  di  dati  tra  i  vari  stadi  della  memoria  avviene  costantemente  in  un  server,  lo  swap  tra  i  registri  CPU  e  la  cache  di  CPU  non  possono  essere  gestiti  dal  DBA,  mentre  invece  è  possibile  il  tuning  tra  RAM e dischi. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 11
  • 12. Un po' di internals Un server PostgreSQL  possiede: Programmi in  esecuzione Dati e stack Shared buffer cache Kernel disk buffer cache kernel 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 12
  • 13. Un po' di internals – Shared Buffer Cache PostgreSQL  non  cambia  direttamente  le  informazioni  su  un  disco  ma  le  scrive  sullo  shared  buffer cache le informazioni vengono prelevate: Dal disk buffer cache Direttamente dal disco I  processi  di  backend  accedono  allo  shared_buffer  e se ad esempio bisogna effettuare un processo di  lettura allora la lettura avviene tutta in RAM.  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 13
  • 14. Un po' di internals – Shared Buffer Cache 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 14
  • 15. Un po' di internals – Shared Buffer Cache COME DEVE ESSERE DIMENSIONATO LO SHARED BUFFER? 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 15
  • 16. Un po' di internals – Shared Buffer Cache Lo shared buffer deve avere la giusta dimensione  per consentire agli altri programmi di girare senza  intoppi. Se lo shared buffer è troppo grande, allora il  sistema operativo inizierà il processo di swap per  richiedere memoria per gli altri programmi in  esecuzione RALLENTAMENTO 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 16
  • 17. Un po' di internals – Shared Buffer Cache  Altro parametro importante: work_mem Specifica l'insieme totale di memoria non shared  RAM  usata per le operazioni interne di ordinamento  e tabelle di hash prima di passarle ai file  temporanei. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 17
  • 18. Resource Usage ­ Memory shared_buffers (integer) : imposta la quantità totale di  memoria usata dai buffers della shared memory. E' una quantità di memoria definita come una RAM dedicata per  Postgresql, usata per il controllo delle connessioni, esecuzione di  operazioni e altro. Postgresql necessita anche di RAM per la gestione dei buffer file  system, ordinamento etc.. per cui shared_buffers non può essere  maggiore della RAM di sistema. 32 Mb di default Deve essere almeno 128 Kb e almeno 16K*max_connections > 2Gb supportata solo per sistemi a 64 bits Incrementare shared_buffers → aumentare molto probabilmente  alcuni parametri del KERNEL SHMMAX e SHMALL. http://www.postgresql.org/docs/current/static/kernel­ resources.html 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 18
  • 19. Resource Usage ­ Memory work_mem (integer) : Specifica l'insieme totale di  memoria non shared RAM  usata per le operazioni  interne di ordinamento e tabelle di hash prima di  passarle ai file temporanei. Per una query complessa con ORDER BY, DISTINCT, MERGE  JOINS in parallelo, è possibile che si superi il valore work_mem  prima che il sistema inizi a depositare I dati su files temporanei  cosicchè la quantità di memoria utilizzata potrebbe essere di  molte volte superiore la work_mem. Questo limite ha il compito di non far andare andare il server in  swap. La work_mem è allocata per multipli di potenze di 2 Il suo valore di default è 1Mb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 19
  • 20. Tunning Come impostare il giusto valore?  (B. Momjian) Per impostare il giusto valore conviene iniziare con il 25%  della RAM totale per quanto riguarda lo shared_buffer e  con il 2% ­  4%  della RAM totale per quanto riguarda la  work_mem. Aumentare i valori se il sistema non va in swap Diminuire i valori se il sistema va in swap.  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 20
  • 21. Resource Usage ­ Memory temp_buffers (integer) : Imposta il numero  massimo di buffers temporanei usati per ogni  sessione del database. Una sessione può allocare buffer temporanei come da lei  richiesto fino alla quantità massima indicata da  temp_buffers. Il valore di default può essere aumentato se la vostra  applicazione usa pesantemente temporary tables. Default 8Mb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 21
  • 22. Resource Usage ­ Memory max_prepared_transactions (integer) : Imposta il  massimo numero di transaction che possono essere  simultaneamente nello stato “prepared”.  Vedi PREPARED TRANSACTION Il valore 0 disabilità questa feature : se l'applicazione non usa  PREPARED TRANSACTION si può tranquillamente disabilitare Qualora si utilizzi questa feature il valore consigliato è un valore  pari quello di max_connection Default 5 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 22
  • 23. Resource Usage ­ Memory maintenance_work_mem (integer) : Imposta la  quantità totale di memoria utilizzata per le  operazioni di amministrazioni del database  VACUUM, CREATE INDEX, ALTER TABLE ADD  FOREIGN KEY. Per ogni sessione una sola può essere eseguita una solo  di queste operazioni → E' buona norma avere un valore  molto maggiore di work_mem per migliorare le  performance di vacuum e restore. Default 16 Mb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 23
  • 24. Resource Usage ­ Memory max_stack_depth (integer) : Imposta la profondità  massima dello stack in Kb. Default 2 Mb Di solito va bene così Aumentare lo stack significativamente può comportare  che una funzione ricorsiva può provocare il crash del   singolo processo server in questione. E' raccomandabile non modificare questo valore. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 24