Prestazioni PostgreSQL 8.4 FreeBSD 8.2

Massimo Lusetti mlusetti a gmail.com
Mar 30 Ago 2011 22:54:24 CEST


2011/8/30 Gianluca Sordiglioni <inzet a yahoo.com>:

> Premetto che è molto tempo che non uso PostgreSQL e non mi ritengo un esperto. Posso azzardare che il tuning dei parametri in FreeBSD 8.x è alquanto poco significativo, aveva più senso in FreeBSD 3.x.

Ti sbagli... in realta` sono molto attuali 'giocando' con quelli sono
riuscito ad impostare gli shared_buffers piu` o meno come volevo e la
gestione degli indici di postgres e` cambiata... siamo passati da 4 ms
a 1.qualcosa ms...

> Forse stai cercando una risposta difficile ad un problema semplice.

Magari... ;-)

> Per esempio, hai raggiunto i limiti nel tablespace e questi, allocando più spazio, rallenta le operazioni. Oppure un problema di comunicazione del tuo processo, o un rallentamento nella rete.

Credo di aver guardato a modo tutto per tutto... e sono molto al di
sotto del tablespace limit (32TB).

> Prova prima di tutto a monitorare I/O e processi e vedi cosa succede a fronte di operazioni eseguite.

Si infatti e` quello che ho fatto e faccio... quello che salta agli
occhi e` un gstat sempre vicino se non oltre al 100% nella partizione
dedicata e sempre 90-110 op per second sui dischi (vmstat) ... il
collo di bottiglia sembra proprio quello...

> Per minimizzare gli effetti di elementi esterni collegati direttamente sulla console del server ed esegui le queries da lì.
> 20 secondi per una INSERT sono una eternità, specialmente in PostgreSQL che accoda tutto alla fine del file. Questo mi ricorda che potresti verificare quanto spesso viene effettutato un VACUUM, cioè quella routine che recupera spazio su disco ricompattando i file e nel far ciò le statistiche. Oppure, quanto troppo poco viene lanciata. Mi sembra di ricordare che dalla versione 7.x ogni 2^32 transazioni il vacuuming sia mandatory.

Come avevo detto mi ero sbagliato rileggi il thread... e per quanto
riguarda il vacuum e` impostato l'autovacuum che si diverte...

Ho tolto fsync e i sync_commit, allungato i checkpoint segment e
timeout ... ma sembra che lui voglia scrivere su disco perennemente
(ed in effetti io gli faccio fare un sacco di insert) ... la macchina
e` scarica: load averages:  0.14,  0.26,  0.31, non swappa, la cpu e`
idle al 94% e un numero di context switch non elevato per i miei i5
(intorno ai 10000) e neanche tanti page faults... Posso girare un
output di qualche minuto di vmstat a pieno carico se interessa e puo`
essere utile...

Per il resto l'unica cosa che sembra essere usata a manetta sono i
dischi (sicuramente anche perche` sono in gmirror)...

Non so mi sembra che dovrei cercare di dire a postgresql di usare piu`
ram anche per gli insert (WAL e compagnia) ma di piu` di cosi non so
proprio dove andare...

Grazie a tutti e se avete idee buttate pure ;-) ...
-- 
Massimo
http://meridio.blogspot.com


Maggiori informazioni sulla lista Esperti