* * *
Benvenuto! Effettua l'accesso oppure registrati.
16 Aprile 2021, 00:41:06

Inserisci il nome utente, la password e la durata della sessione.

Links

ads

Benvenuto


Benvenuto su la Community CentOS-Italia.Org

La Community Italiana di Linux CentOS e' lieta di averti tra noi , CentOS-Italia.Org e' un risorsa di guide e forum dal principiante al sistemista senior.
Clicca qua per registrati ora

La registrazione e' gratuita e ti consente di avere pieno accesso alle risorse di CentOS-Italia.org , come uso della ricerca avanzata , le funzioni interattive del portale e visualizzare i links nei post.
Gli utenti registrati non visualizzano gli ads, quindi registrati subito se non l'hai gia fatto.

Lo staff di CentOS-Italia.Org cerca di rendere la community un posto piacevole e il piu' produttivo possibile, invitiamo quindi i nuovi utenti a leggere le regole base.
Per info o problemi di registrazione scrivere a centos (at) centos-italia.org .

Autore Topic: PHP + Postgresql lento  (Letto 4687 volte)

Offline lossoth

  • Newbie
  • *
  • Post: 20
    • Mostra profilo
PHP + Postgresql lento
« il: 14 Ottobre 2011, 12:30:08 »
Da quando ho riacceso tutto ho dei problemi con postges: alcune volte ha dei rallentamenti improvvisi e le query fatte dall'interfaccia web sono troppo lente.
Postgres gira sulla stessa macchina sotto attacco e viene lanciato dal php sempre sulla stessa macchina per eseguire delle query da visualizzare nella parte pubblica web.
Ieri ho fatto un po' di tuning di postgresql.conf alzando i seguenti valori da -> a:
- max_connections 200->400
- shared_buffers 32Mb->64Mb
- effective_cache_size 128Mb -> 4096Mb
(il server ha 8Gb RAM)

C' una cosa strana che non capisto:
analizzando i log delle query fatte da php via apache queste sono nell'ordine dei 5 secondi! mentre la stessa query lanciata con explain analyze in psql sul medesimo db (via shell) da un tempo nell'ordine dei 0.05 millisecondi!
Quindi non il db in se ad andare piano, ma quando una query viene lanciata da php.

Qualche idea?

Non posso cambiare DB...

Gli indici sono messi bene.

Il dubbio che mi assale che abbia messo qualche impostazione tcp che non va bene per postgres (in un post precedente c' im mio sysctl.conf modificato).

Edit:
Mi sono limitato a riportare il tuo post precedente.
« Ultima modifica: 14 Ottobre 2011, 12:36:41 di LonelyWolf »

Offline LonelyWolf

  • Moderator
  • Hero Member
  • *****
  • Post: 1392
    • Mostra profilo
    • Traversate dei laghi
Re: PHP + Postgresql lento
« Risposta #1 il: 14 Ottobre 2011, 12:43:56 »
Dal link che ti ho postato:

Things to Try Before You Post

You will save yourself a lot of time if you try the following things before you post your question:

    Read Using EXPLAIN if you haven't already.
    ANALYZE your database to update query stats.
    VACUUM your database to purge if you are not already running Autovacuum.
    Check your main GUC settings to make sure that they are set to sensible values (see Tuning Your PostgreSQL Server for additional hints):
        shared_buffers should be 10% to 25% of available RAM
        effective_cache_size should be 75% of available RAM
    Test changing work_mem: increase it to 8MB, 32MB, 256MB, 1GB. Does it make a difference?
    For Insert/Update/Delete queries, you should also try configuring your WAL:
        Move pg_xlog to a separate disk resource, if possible
        Increase checkpoint_segments to 16 or more (assuming you have disk space)
        Increase wal_buffers to 16MB
    Test your IO support: run dd test, bonnie++ or other drive speed tests to see if your performance problem isn't simply hardware-based. For example, a RAID-5 configuration will never have fast inserts/updates no matter how you play with your queries.

shared_buffers should be 10% to 25% of available RAM: non sei neanche al 10%
effective_cache_size should be 75% of available RAM:  puoi alzarla ancora un po' se vuoi, per ora l'hai messa al 50% (fai prima una prova con shared buffers a 1GB)

Gli altri suggerimenti li hai seguiti?

http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

Come al solito ricordarsi restart/reload del servizio dopo le modifiche ai file di configurazione.

Offline lossoth

  • Newbie
  • *
  • Post: 20
    • Mostra profilo
Re: PHP + Postgresql lento
« Risposta #2 il: 14 Ottobre 2011, 16:54:20 »
fatto tutto il tuning e riavviato
non ci sono meglioramenti

la cosa strana che le query fatte nel sito sono troppo lente mentre quelle via psql sono una scheggia

quindi mi sa che il problema non delle prestazioni di postrgres in se...

non vorrei fossero le modifiche fatte a tcp, soprattutto i timeout...
riporto sysctl.conf

Codice: [Seleziona]
# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 1

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

#custom: 20111007: prevent syn flood:
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 1
net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.ipv4.tcp_no_metrics_save = 1
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.netfilter.ip_conntrack_max = 131072
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 208000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 80
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 20
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 40
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 20

Offline LonelyWolf

  • Moderator
  • Hero Member
  • *****
  • Post: 1392
    • Mostra profilo
    • Traversate dei laghi
Re: PHP + Postgresql lento
« Risposta #3 il: 14 Ottobre 2011, 17:37:14 »
php che con postgres lento, non ci puoi fare nulla se non migliorare leggermente la situazione interfacciandoci uno script diverso, a.e. php->python->postgres.

Non per dirti di cambiare, ma php+mysql 50 volte + veloce che php+postgres.

 

Notizie

Per un veloce Download di CentOS 6 http://mi.mirror.garr.it/mirrors/CentOS/6.4/isos/ Per una ricerca veloce su google linux http://www.google.it/linux

Collegamenti

Posts Recenti

Utenti
  • Utenti in totale: 5959
  • Ultimo: Sina
Statistiche
  • Post in totale: 13156
  • Topic in totale: 2961
  • Online Oggi: 160
  • Massimi online: 9639
  • (14 Gennaio 2020, 10:20:21)
Utenti Online
Utenti: 0
Visitatori: 164
Totale: 164

Permessi

-no content-

ShoutBox!

Ultimo 5 Shout:

fzphoto

19 Febbraio 2018, 09:18:24
Ciao a tutti. Ho installato l'ultima versione di centos 7 per poter lavorare comodamente con DaVinci resolve 14. Solo che non riesco, ne a installare il programma Davinci, ne tanto meno, il driver nvidia per la scheda grafica geoforce 1080 ti. Sul web non trovo niente che mi aiuti. Premetto che sono

aner64

07 Febbraio 2018, 11:21:40
Buongiorno. Ho installato l'ultima versione di CENTOS7 aggiornata alla 7.0.4.1708. Ho bisogno di fare un restore di file da un filesystem reiserfs. CENTOS7 non ha reiserfs tra i FS e bisogna installarlo. Quando di cerca di installare kmod-reiserfs-0.0-2.el7.elrepo.x86_64.rpm escono errori per mancan
 

LonelyWolf

28 Dicembre 2017, 08:37:34
da ieri non vedo pi il css solo un problema mio?

trattore

28 Settembre 2015, 03:30:48
ma qui non c' mai nessuno
 ;)

ivo

26 Agosto 2015, 16:01:14
Ho configurato il DHCP creato il file /etc/dhcpd.conf con il seguente contenuto
-------------------------------------------------------------------------------
ddns-update-style interim;
ignore client-updates;

authoritative;

subnet 172.16.208.96 netmask 255.255.255.240 {
    option routers      

Mostra ultimi 50