Vous n'êtes pas identifié(e).
Bonjour,
Sur une base de données de prod nous avions des problèmes de perf et avons activé la journalisation des requêtes pour chercher des requetes lentes.
Nous n'arrinvons plus à désactiver cette fonctionnalité, l'idée serait maintenant de ne logguer que les requetes dont les temps d'exec dépassent 1 seconde
Dans postgresql.conf nous avons mis :
log_statement = 'none'
log_min_duration_statement = 1000
Or toutes les requetes sont logguées.
Merci d'avance pour votre aide...
Hors ligne
Bonjour,
Avez-vous rechargé la configuraiton après avoir modifié le postgresql.conf? Si oui, que renvoie la requête
SELECT * FROM pg_settings WHERE name = 'log_min_duration_statement';
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour,
Désolé pour lé raponse tardive j'étais en vacances
Voici le résultat de la requete :
name | setting | unit | category | short_desc | extra_desc | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart
----------------------------+---------+------+-------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------+-----------+---------+--------------------+---------+------------+----------+----------+-----------+-----------------------------------+------------+-----------------
log_min_duration_statement | 1000 | ms | Reporting and Logging / When to Log | Sets the minimum execution time above which all statements will be logged. | Zero prints all queries. -1 turns this feature off. | superuser | integer | configuration file | -1 | 2147483647 | | -1 | 1000 | /data/biohub/postgresql.auto.conf | 6 | f
Oui j'ai bien rechargé la config et aussi redémarré la base....
Dernière modification par AnkyFive (26/12/2023 09:25:31)
Hors ligne
La configuration actuelle provient du fichier postgresql.auto.conf, c'est-à-dire une configuration effectuée via ALTER SYSTEM. À noter que toute modification effectuée par ALTER SYSTEM est plus prioritaire qu'une simple modification dans le fichier postgresql.conf, il vous faut donc toujours effectuer des configuration via ALTER SYSTEM (ou jamais), mais ne pas mixer les deux. Cela dit, la configuration montre bien que la valeur de log_mi_duration_statements est à 1000 ms, soit 1 seconde. Peut être avez-vous également fait un ALTER SYSTEM pour logger toutes les requêtes (type log_statements = all) et avez essayé de remettre log_statements = none dans le postgresql.conf?
Si ce n'est pas le cas, avez-vous un exemple de ligne qui ne devrait pas se trouver dans les logs? Pouvez-vous également montrer le résultat de la commande "\drds" sur psql ?
Julien.
https://rjuju.github.io/
Hors ligne
Il est possible qu'on ait melangé alter system et modification du fichier de conf.
log_statement est à none car :
name | setting | unit | category | short_desc | extra_desc | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart
---------------+---------+------+-------------------------------------+-------------------------------------+------------+-----------+---------+--------------------+---------+---------+--------------------+----------+-----------+-----------------------------------------+------------+-----------------
log_statement | none | | Reporting and Logging / What to Log | Sets the type of statements logged. | | superuser | enum | configuration file | | | {none,ddl,mod,all} | none | none | /etc/postgresql/13/main/postgresql.conf | 562 | f
Et dans postgres.conf il est à none.
Voici un exemple de lignes de log que l'on obtient (il y en a beaucoup) :
2023-12-26 11:59:04.273 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 1.824 ms
2023-12-26 11:59:04.273 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.018 ms
2023-12-26 11:59:04.275 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 1.832 ms
2023-12-26 11:59:04.275 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.388 ms
2023-12-26 11:59:04.277 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.023 ms
2023-12-26 11:59:04.277 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.039 ms
2023-12-26 11:59:21.558 UTC [2274782] prtg@xxxxxxxx LOG: duration: 9.205 ms
2023-12-26 11:59:21.631 UTC [2274782] prtg@xxxxxxxx LOG: duration: 0.233 ms
2023-12-26 11:59:21.631 UTC [2274782] prtg@xxxxxxxx LOG: duration: 0.047 ms
2023-12-26 11:59:21.631 UTC [2274782] prtg@xxxxxxxx LOG: duration: 0.009 ms
2023-12-26 11:59:41.397 UTC [2274845] prtg@xxxxxxxx LOG: duration: 7.892 ms
2023-12-26 11:59:41.466 UTC [2274845] prtg@xxxxxxxx LOG: duration: 0.182 ms
2023-12-26 11:59:41.466 UTC [2274845] prtg@xxxxxxxx LOG: duration: 0.064 ms
2023-12-26 11:59:41.466 UTC [2274845] prtg@xxxxxxxx LOG: duration: 0.010 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.017 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.006 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.047 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.029 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.007 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.008 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.016 ms
2023-12-26 11:59:46.080 UTC [2269780] xxxxxxxx@xxxxxxxx LOG: duration: 0.006 ms
Hors ligne
Si seule la durée est affichée, sans le texte de la requête, alors c'est que vous avez activé log_duration.
Julien.
https://rjuju.github.io/
Hors ligne
Effectivement ça marche !
Merci beaucoup
Hors ligne
En fait, je n'ai plus de log du tout, mais ce que je voulais faire c'est juste de logger les requetes qui dépassent 1 seconde.
Donc avec ça :
log_min_duration_statement = 1000
log_duration = off
Ca ne correspond pas vraiment à ce que je veux faire, j'ai juste tout désactivé non ?
Hors ligne
Cela devrait faire exactement ce que vous voulez, en supposant qu'il s'agit bien de la configuration qui a été appliquée.
Julien.
https://rjuju.github.io/
Hors ligne
Ok merci
Hors ligne