Vous n'êtes pas identifié(e).
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
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
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
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
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
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
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
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
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
Merci pour votre réponse
Hors ligne