PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Installation » upgrade de postgresql, pg_restore error (nbr connexion?) » 04/07/2023 14:46:44

Merci pour toutes ces infos.
Je vais regarder tout ça, et oui je vais faire d'autres types de comparaison de perf. (appli / requetes) pour m'assurer de la bonne config du nouveau serveur wink

Bonne Journée

#2 Re : Installation » upgrade de postgresql, pg_restore error (nbr connexion?) » 04/07/2023 12:09:05

Bonjour

Merci pour votre réponse.
Alors en effet j'ai globalement un peu moins de ram coté nouveau serveur / l'ancien (256Gb vs 392Gb) et pour les valeurs de l'overcommit j'avoue que je ne connais. Est-ce bien les valeurs CommitLimit de /proc/memInfo ?
Voici ce que sur les 2 serveurs dans memInfo

Ancien Serveur    Nouveau Serveur
MemTotal:           396038428 kB     263416368 kB
MemFree:            1518052 kB      157093180 kB
MemAvailable:      318555424 kB      258382888 kB
Buffers:               1112 kB        265444 kB
Cached:            347185344 kB      99559376 kB
SwapCached:          128892 kB          3812 kB
Active:            135375024 kB      12263820 kB
Inactive:          250167600 kB      87594368 kB
Active(anon):      67532096 kB        636372 kB
Inactive(anon):     5375748 kB      518896 kB
Active(file):      67842928 kB    11627448 kB
Inactive(file):    244791852 kB    87075472 kB
Unevictable:                   0 kB            0 kB
Mlocked:                         0 kB            0 kB
SwapTotal:         6290428 kB      4194300 kB
SwapFree:          4822336 kB      4023804 kB
Dirty:               10344 kB         1664 kB
Writeback:               0 kB            0 kB
AnonPages:        38237712 kB        29668 kB
Mapped:           34280832 kB       563568 kB
Shmem:            34551384 kB      1121240 kB
Slab:              5764996 kB      3630048 kB
SReclaimable:      5540748 kB      3471012 kB
SUnreclaim:         224248 kB       159036 kB
KernelStack:         20144 kB         7488 kB
PageTables:         436444 kB        11332 kB
NFS_Unstable:            0 kB            0 kB
Bounce:                  0 kB            0 kB
WritebackTmp:            0 kB            0 kB
CommitLimit:      204309640 kB     135902484 kB
Committed_AS:     81584852 kB     27369240 kB
VmallocTotal:     34359738367 kB     34359738367 kB
VmallocUsed:       1105560 kB       705064 kB
VmallocChunk:     34157101052 kB     34224742396 kB
HardwareCorrupted:         0 kB         0 kB
AnonHugePages:       1689600 kB      4096 kB
HugePages_Total:         0    0
HugePages_Free:          0    0
HugePages_Rsvd:          0    0
HugePages_Surp:          0    0
Hugepagesize:           2048 kB      2048 kB
DirectMap4k:         273344 kB    237540 kB
DirectMap2M:        12263424 kB        5492736 kB
DirectMap1G:        392167424 kB       264241152 kB

Pour CommitLimit la différence n'est pas énorme mais plus marquée pour Committed_AS... Je vais regarder a quoi cela correspond, mais si vous voyez quelque chose qui pourrait expliquer le problème je suis preneuse smile
Merci !

#3 Installation » upgrade de postgresql, pg_restore error (nbr connexion?) » 03/07/2023 17:58:05

vero4PG
Réponses : 5

Bonjour,


Je suis en train de transférer un serveur postgresql d'une machine (Serveur1) à une autre (Serveur2) et j'en profite donc pour faire un upgrade de la version de PG....
Après qq tests j'ai décidé d'utiliser pg_dump/pg_restore pour le transfert des données en utilisant les options "-F d et -J XXX"

Les serveurs sont sous linux CentOS 7, et les versions de PG sont
* serveur1 : Pg 9.2  - Linux  yyyy 3.10.0-1160.83.1.el7.x86_64 #1 SMP Tue Jan 24 08:34:19 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
* serveur2: Pg 15 - Linux xxxx 3.10.0-1160.83.1.el7.x86_64 #1 SMP Tue Jan 24 08:34:19 CST 2023 x86_64 x86_64 x86_64 GNU/Linux

Pour la migration, je me suis connectée sur le serveur2 et j'ai lancé la commande suivante, dans un batch pour les 260 bases (ce qui fait ~6To)

/usr/bin/pg_dump -v -j 380 -F d -h serveur1 -p 5432 -U pgAdmin -d "$db" -f "$bkpdir/$db" 

OK !

J'ai ensuite lancé la commande pour la restauration, toujours dans un batch:

/usr/bin/pg_restore -v -j 300 -F d -U postgres -d "$dbname" "$dbname" 

Et j'ai les erreurs suivantes lors de la restauration :

restore: processing item 2922 DEFAULT scan id
pg_restore: creating DEFAULT "public.scan id"
pg_restore: processing item 2924 DEFAULT theoretical_feature id
pg_restore: creating DEFAULT "public.theoretical_feature id"
pg_restore: processing item 2925 DEFAULT tile id
pg_restore: creating DEFAULT "public.tile id"
pg_restore: error: reconnection failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: Resource temporarily unavailable
    Is the server running locally and accepting connections on that socket?
pg_restore: error: reconnection failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: Resource temporarily unavailable
    Is the server running locally and accepting connections on that socket?
pg_restore: error: reconnection failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: Resource temporarily unavailable

* En descendant la valeur de -j à 220 c'est OK !


* J'ai fait des tests de pg_dump depuis mon serveur PG15 et j'ai le meme problème si je mets une valeur de -j > 220 (je n'ai pas cherché la limite exacte). Donc ce n'est pas pg_restore qui est plus sensible que pg_dump...


Sur le nouveau serveur la configuration et celle d'origine avec les changements suivants  (j'ai entre autre utilisé pgtune):
A noter que j'ai 256Go de Ram, 2 proc 8Coeurs, et des disques SSD.

listen_addresses = '*'
max_connections = 500
tcp_keepalives_idle = 300

shared_buffers = 32GB
huge_pages = try
work_mem = 100MB
maintenance_work_mem = 2GB
effective_cache_size = 100GB
random_page_cost = 1.1
effective_io_concurrency = 200

default_statistics_target = 500

max_worker_processes = 16
max_parallel_workers_per_gather = 8
max_parallel_maintenance_workers = 4
max_parallel_workers = 16
checkpoint_completion_target = 0.9

wal_buffers = 16MB
max_wal_size = 16GB
min_wal_size = 4GB

log_min_duration_statement = 5000
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = off
log_lock_waits = on

Sur mon ancien serveur j'ai une configuration équivalente (notamment au niveau du max_connection).  J'ai cherché un peu de droite de gauche pour savoir d'où pouvait venir le problème en vain. Même si un max_connection à 500 n'est peut être pas optimal,  ce qui me gène c'est d'avoir un comportement moins bon sur le nouveau serveur !!

A noter le pg_dump du serveur1 depuis le serveur2 se fait donc au travers du réseau ... moins rapide ... est-ce que cela pourrait avoir un lien ?!
Est-ce qu'il pourrait y avoir une raison au niveau du serveur lui même (kernel ?)


Merci par avance pour votre aide !
Bonne Journée

Pied de page des forums

Propulsé par FluxBB