|
Логирование запросов
|
|||
---|---|---|---|
#18+
Всем добрый день. Опыта настройки конкретно с PostgreSQL мало. Требуется настроить нормально лог медленных запросов. Настройки по включению применил: log_duration = on log_min_duration_statement = 1000 Есть несколько вопросов: 1) В лог пишется много записей вида: 2018-01-14 08:08:36 UTC LOG: duration: 0.025 ms 2018-01-14 08:08:36 UTC LOG: duration: 0.173 ms 2018-01-14 08:08:36 UTC LOG: duration: 0.087 ms 2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms Но текста запроса никакого нет. В чем смысл этих сообщений и как-то можно настроить, чтоб они не писались в лог? 2) Когда настраивал лог медленных запросов, то тестировал попадание запроса так: select * from таблица. Запрос хоть и выполнялся больше 1 секунды, в лог не попадал. Пока не добавил условие where, запрос в логе не увидел. Это какая-то фишка настройки? 3) В чем различия методов логирования log_destination: stderr, csvlog, syslog, and eventlog? Внятного описания в инете не нашел, кроме советов, что если используете винду, то стоит поменять на eventlog. Сейчас стоит stderr, и смешиваются в логе сообщения об ошибках и медленных запросах. В идеале, конечно же, хотелось бы в отдельный файл логировать медленные запросы. Заранее спасибо. --- Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 11:19 |
|
Логирование запросов
|
|||
---|---|---|---|
#18+
автор2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms Но текста запроса никакого нет. авторНастройки по включению применил: log_duration = on https://www.postgresql.org/docs/current/static/runtime-config-logging.html мануалCauses the duration of every completed statement to be logged. The default is off. Only superusers can change this setting. For clients using extended query protocol, durations of the Parse, Bind, and Execute steps are logged independently . Как попросили логировать всё, так и логируем. Смотрите соседние строки лога плюс настройки log_line_prefix, в дефолтах маловато подробностей. Мы ставим кругом Код: plaintext
авторВ чем различия методов логирования log_destination: stderr, csvlog, syslog, and eventlog? В том куда (и для csv в каком формате) отправлять логи. авторВ идеале, конечно же, хотелось бы в отдельный файл логировать медленные запросы. Не реализовано. Сейчас можно писать только в один лог. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 12:04 |
|
Логирование запросов
|
|||
---|---|---|---|
#18+
Melkijавтор2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms Но текста запроса никакого нет. авторНастройки по включению применил: log_duration = on https://www.postgresql.org/docs/current/static/runtime-config-logging.html мануалCauses the duration of every completed statement to be logged. The default is off. Only superusers can change this setting. For clients using extended query protocol, durations of the Parse, Bind, and Execute steps are logged independently . 1) Как попросили логировать всё, так и логируем. Смотрите соседние строки лога плюс настройки log_line_prefix, в дефолтах маловато подробностей. Мы ставим кругом Код: plaintext
2) Если запрос уже залогировали из-за log_duration - то пишем про него ещё раз только duration 3) авторВ чем различия методов логирования log_destination: stderr, csvlog, syslog, and eventlog? В том куда (и для csv в каком формате) отправлять логи. авторВ идеале, конечно же, хотелось бы в отдельный файл логировать медленные запросы. Не реализовано. Сейчас можно писать только в один лог. Спасибо. Правда вопросы остались. :) 1) Я не хочу все логировать, а только запросы больше log_min_duration_statement = 1000, т.е. 1 секунды. А записи: 2018-01-14 08:08:36 UTC LOG: duration: 0.025 ms 2018-01-14 08:08:36 UTC LOG: duration: 0.173 ms 2018-01-14 08:08:36 UTC LOG: duration: 0.087 ms 2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms - судя по логу, меньше секунды! Почему они туда попадают тогда? 2) А какой запрос повторно пишется в лог без текста запроса, последний по времени? 3) Только место расположения? А то в инете было "громко" сказано: метод логирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 14:48 |
|
Логирование запросов
|
|||
---|---|---|---|
#18+
Megabyte2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms - судя по логу, меньше секунды! Почему они туда попадают тогда? Я ведь уже ответил цитатой с мануала. Потому что log_duration именно это и делает. Настройка не включает возможность делать log_min_duration_statement - они не связаны между собой и живут по принципу логического "или". Megabyte2) А какой запрос повторно пишется в лог без текста запроса, последний по времени? Тот который выполнял этот backend. Например, bind параметров к prepared statements. Потому что они тоже логируются гайкой log_duration. Megabyte3) Только место расположения? А то в инете было "громко" сказано: метод логирования. Не место расположения, а куда отправлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 16:01 |
|
Логирование запросов
|
|||
---|---|---|---|
#18+
MelkijMegabyte2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms - судя по логу, меньше секунды! Почему они туда попадают тогда? Я ведь уже ответил цитатой с мануала. Потому что log_duration именно это и делает. Настройка не включает возможность делать log_min_duration_statement - они не связаны между собой и живут по принципу логического "или". Megabyte2) А какой запрос повторно пишется в лог без текста запроса, последний по времени? Тот который выполнял этот backend. Например, bind параметров к prepared statements. Потому что они тоже логируются гайкой log_duration. Megabyte3) Только место расположения? А то в инете было "громко" сказано: метод логирования. Не место расположения, а куда отправлять. Понял. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 16:19 |
|
|
start [/forum/topic.php?fid=53&fpage=61&tid=1996004]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 138ms |
0 / 0 |