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 05/11/2020 14:37:07

sourour
Membre

How to solve problem of CPU usage 100% in Linux server and Postgres da

I'm using a Linux server (Ubunto 18.04) that hosts the Postgres database. PostgreSQL makes CPU Usage up-to 100% and sometimes the related web site is down and after server restarting the site turns to work fine.

Running the query:

SELECT
(now() - pg_stat_activity.query_start) as interval,  state
FROM pg_stat_activity


Results more than complex queries running at the same time responding to site navigation requests and depending on the number of connected users.

The problem is of the number of connected users increases the site is blocked and after restarting the database server it turns to work fine.

Could you please tell me how to solve this problem?

The server RAM is more than 23GB.

Hors ligne

#2 05/11/2020 15:28:15

ruizsebastien
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

what are the values for those parameters :
(in your postgresql.conf or (better) in pg_settings)

shared_buffers
wal_buffers
work_mem
maintenance_work_mem
max_connections

(and : it's a french forum ;-) so please try to use french)

Dernière modification par ruizsebastien (05/11/2020 15:29:35)


Cordialement,

Sébastien.

Hors ligne

#3 05/11/2020 16:26:38

sourour
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

les paramètres sont :

max_connections = 1000   
shared_buffers =4GB
#wal_buffers = 16MB (n'est pas utilisé)
work_mem =82MB   
maintenance_work_mem =512MB

Hors ligne

#4 05/11/2020 17:18:40

ruizsebastien
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

je pense qu'il y a 2 problèmes potentiel ici :
Pas assez de RAM sur le serveur car avec 1000 connections simultannées potentielles multipliées par 82MB par session on peut atteindre 80G de mémoire utilisée donc avec le risque de saturer le serveur (swap notamment).
Ensuite quand la swap est saturée il existe un process linux "kswapd" qui tente de faire du ménage en utilisant beaucoup de CPU.
Donc c'est normal qu'en rebootant le serveur tout redevienne normal (au moins au début...)
tout ceci n'est qu'une piste parmi d'autres.


Cordialement,

Sébastien.

Hors ligne

#5 05/11/2020 17:20:07

ruizsebastien
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

oh et au passage j'ajouterai que c'est une bonne idée d'avoir un pooler de connexion au  niveau du serveur d'application/web.


Cordialement,

Sébastien.

Hors ligne

#6 05/11/2020 17:28:27

sourour
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

Le problème est que le site ne fonctionne plus au delà de  180 connexions. On doit à chaque fois le redémarrer.
Quelle est la meillieure configuration pour ne plus avoir ce problème ?

Dernière modification par sourour (05/11/2020 17:29:51)

Hors ligne

#7 05/11/2020 17:39:20

ruizsebastien
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

180 connexions simultanées ? Si oui on peut atteindre les 14G juste pour les sessions actives, sans compter tout le reste qui tourne sur le serveur (y compris les autres process postgresql).
le mieux serait de faire un état des lieux système au moment où le problème de CPU intervient pour voir quel process surconsomme, pour voir l'état de la RAM/SWAP.
Si le CPU est surconsommé par des sessions PostgreSQL, peut être faudrait-il voir du côté des requêtes qui passe à ce moment là. Peut être certaines sont mal écrites et/ou ont de mauvais explain plans.


Cordialement,

Sébastien.

Hors ligne

#8 05/11/2020 17:48:45

sourour
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

Oui 180 connexions simultanées et le CPU est consommé tous par les sessions PostgreSQL , j'ai des requêtes complexes qui s'exécutent  simultanément plutot des longues fonctions PostgreSQL alors consomments de la mémoire.

Y'a-t-il une configuration qui adéquate pour adapter ? Ou bien est necessaire augementer la RAM ?

Hors ligne

#9 05/11/2020 18:20:06

ruizsebastien
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

pour pallier à l'urgence il faudrait augmenter la RAM de manière conséquente.
Les paramètres PostgreSQL semblent correctes.
Si vous augmentez la RAM il faudra augmenter aussi effective_cache_size.
Il faudra aussi faire des explain plans sur les requêtes complexes de vos fonctions pour voir les axes d'améliorations (index, jointures, logique SQL, etc...).
faire un tour du côté des statistiques aussi pour voir si elles sont à jour.
Et peut être du côté des rebuild index, vacuum/vacuum full des tables s'il y a beaucoup de mises à jour.
Bienvenu dans le monde complexe du tuning de base de données...


Cordialement,

Sébastien.

Hors ligne

#10 05/11/2020 18:25:56

sourour
Membre

Re : How to solve problem of CPU usage 100% in Linux server and Postgres da

Merci pour votre réponse  smile

Hors ligne

Pied de page des forums