@pgsql

Страница 651 из 1062
Dmitry
29.01.2018
09:41:55
его смотрели, или чем то не удовлетворяет?

Ascandar
29.01.2018
09:43:46
Постгре 9.4

А он с 9.5

а так бы выбрал pg_probackup

Google
Alex
29.01.2018
10:25:12
Версия какая у пг? Проблема известная в узком кругу

Есть у нас подрзрение что пг чот не допроверяет с такими коннектами

Кстати

А на сервере видать соединения tcp. Netstat показывает их?

Аггей
29.01.2018
10:27:35
Alex
29.01.2018
10:27:55
Их просто очень много и гдето не досмотрели

Тк такая проблема уже давно видна

Аггей
29.01.2018
10:29:06
А воспроизводится на всех связках? Или как тут - win клиент, linux сервер?

Думаю не в особенностях реализации сокетов проблема?

Alex
29.01.2018
10:30:31
С линухами. На винде никого у нас нет

Думаю не в особенностях реализации сокетов проблема?
Было вродь даже однажды что без коннектов уже бекенд висел

Но сам не видел, коллеги видали

Так же одни жаловались что при переходе на 10 чаще стало проявлятся

Google
Alex
29.01.2018
10:33:51
Поэтому мы статистику собираем по таким случаям, тк воспроизвести у нас пока не получается

Dmitry
29.01.2018
10:42:25
Поэтому мы статистику собираем по таким случаям, тк воспроизвести у нас пока не получается
дропни пользователя который сейчас подключен и увидешь что во вьюхе pg_stat_activity его не видно, а соединение есть :)

Mike Chuguniy
29.01.2018
10:45:57
дропни пользователя который сейчас подключен и увидешь что во вьюхе pg_stat_activity его не видно, а соединение есть :)
Судя по обсуждению, таки имеет место ситуация, когда контакт с БД во вьюхе есть, может даже в выводе netstat оно есть, а вот реально, на стороне клиента (или всё-таки приложения?) нет.

Я такое на 9.4 выидел пару лет назад, и даже как-то обходил, а вот как - уже не помню. :(

Alex
29.01.2018
10:53:29
Вот тут вчера ссылочкой поделились

https://jobs.zalando.com/tech/blog/hack-to-terminate-tcp-conn-postgres/?gh_src=4n3gxh1

Let Eat
29.01.2018
12:57:25
Я бы все волосы везде повыдирал, если б пришлось дебажить такое: https://postgr.es/p/3_S

Dmitry
29.01.2018
13:10:51
Я бы все волосы везде повыдирал, если б пришлось дебажить такое: https://postgr.es/p/3_S
от stat collector зависит работоспособность сервера. помоему отсылать такую информацию по udp - это фейл, не?

Darafei
29.01.2018
13:18:34
через юниксовый сокет?

Alex
29.01.2018
13:19:45
Забавно да

Slach
29.01.2018
13:21:53
да не надо ничего программировать, всё уже на напрограммировали: https://github.com/iovisor/bcc/blob/master/tools/dbslower.py
USDT probes, which means it needs MySQL and PostgreSQL built with # USDT (DTrace) support. ну как бы... такое вообще по умолчанию сейчас же никто не собирает

Alex
29.01.2018
13:25:07
а зря, хорошая штука. в mysql 8 их вообще выкинули :(
Наверное ,просто больше ручек прикрутили для диагностики?

Alexey
29.01.2018
13:25:41
я всё хочу найти время для сравнения pg_stat_* и performance_schema. по-моему, там сравнение сильно не в пользу постгреса получится

Slach
29.01.2018
13:31:57
я всё хочу найти время для сравнения pg_stat_* и performance_schema. по-моему, там сравнение сильно не в пользу постгреса получится
в чем именно не в пользу? pg_stat_* вполне адекватную инфу показывает а performance_schema ИНФЫ ДОФИГА. а грамотно ей пользоваться надо долго учиться

Google
Slach
29.01.2018
13:32:35
полностью включенная performance schema дает просадки в производительности mysql, хотя я давно эту информацию не проверял, может в mysql8.0 уже не так

Alexey
29.01.2018
13:33:13
в чем именно не в пользу? pg_stat_* вполне адекватную инфу показывает а performance_schema ИНФЫ ДОФИГА. а грамотно ей пользоваться надо долго учиться
pg_stat какой-то весь куцый и сиротский на первый взгляд. а performance_schema можно включать/выключать по частям, причём динамически (с 5.7)

для тех, кому лень учиться, придумали sys_schema

Mike Chuguniy
29.01.2018
13:34:22
Итак, как сделать, чтобы в ПГ остались висящие сессии. 1. Пара фраз про все и всяческие системные и сетевые вещи: kill -9 <клиент> прибивает сетевые соединения, так что не вариант. Короткие запросы, которые генерируют трафик в обе стороны, тоже не вот уж помогут. Сетевые проблемы я настоятельно рекомендую симулировать зарубанием трафика, как с ПГ-порта сервера, так и на этот ПГ-порт. Соответственно, надо: 1. Длинный запрос. Делаем (виртуалке даём гиг оперативы и не лезем в настройки памятежорства): pgbench -h testhost -U test -iqs 100 2. генерируем разного: pgbench -h pgmm01 -U test -nc4 -T180 запускаем команду несколько раз. Ну чтобы разнообразить собственную жизнь. 3. на сервере родить скриптик: #!/usr/bin/env bash # Disable all connection exclude ssh by iptables NONROOT=65 PGDATAPORT="5432" IPTABLESTMP="/tmp/iptables.save.tmp" [ "`id -u`" = "0" ] || { echo "This script require root rights" echo "Start it by command: sudo $0" exit $NONROOT } iptables-save > $IPTABLESTMP iptables -F iptables -A INPUT -p tcp --dport $PGDATAPORT -j DROP iptables -A OUTPUT -p tcp --sport $PGDATAPORT -j DROP 4. После издевательств пгбенча над базой скормить в клиенте что-нибудь вот такое: test@test=> select pa.aid,abalance from pgbench_accounts as pa left join pgbench _history ph on pa.aid=ph.aid order by abalance; 5. А на сервере запустить выше указанный скрипт. Вуаля! Клиента можно прибить kill -9, а в консоли сервера наблюдать вот такое: test=# select datname,usename,backend_start, now(), query from pg_stat_activity where datname='test'; datname | usename | backend_start | now | query ---------+----------+-------------------------------+--------------------------- ---+---------------------------------------------------------------------------- ----------------------------------------- test | test | 2018-01-29 16:14:18.334963+00 | 2018-01-29 16:36:12.40825+ 00 | select pa.aid,abalance from pgbench_accounts as pa left join pgbench_histor y ph on pa.aid=ph.aid order by abalance; test | postgres | 2018-01-29 16:22:52.556845+00 | 2018-01-29 16:36:12.40825+ 00 | select datname,usename,backend_start, now(), query from pg_stat_activity wh ere datname='test'; (2 rows) test=# Т.е. бек запущен в 16:14, сейчас 16:36

Alex
29.01.2018
13:35:10
в чем именно не в пользу? pg_stat_* вполне адекватную инфу показывает а performance_schema ИНФЫ ДОФИГА. а грамотно ей пользоваться надо долго учиться
Оно показывает обычно что есть проблема на серваке. А в чем она заключается дай бог дадут много гигабайтные логи и дебаггер.

Итак, как сделать, чтобы в ПГ остались висящие сессии. 1. Пара фраз про все и всяческие системные и сетевые вещи: kill -9 <клиент> прибивает сетевые соединения, так что не вариант. Короткие запросы, которые генерируют трафик в обе стороны, тоже не вот уж помогут. Сетевые проблемы я настоятельно рекомендую симулировать зарубанием трафика, как с ПГ-порта сервера, так и на этот ПГ-порт. Соответственно, надо: 1. Длинный запрос. Делаем (виртуалке даём гиг оперативы и не лезем в настройки памятежорства): pgbench -h testhost -U test -iqs 100 2. генерируем разного: pgbench -h pgmm01 -U test -nc4 -T180 запускаем команду несколько раз. Ну чтобы разнообразить собственную жизнь. 3. на сервере родить скриптик: #!/usr/bin/env bash # Disable all connection exclude ssh by iptables NONROOT=65 PGDATAPORT="5432" IPTABLESTMP="/tmp/iptables.save.tmp" [ "`id -u`" = "0" ] || { echo "This script require root rights" echo "Start it by command: sudo $0" exit $NONROOT } iptables-save > $IPTABLESTMP iptables -F iptables -A INPUT -p tcp --dport $PGDATAPORT -j DROP iptables -A OUTPUT -p tcp --sport $PGDATAPORT -j DROP 4. После издевательств пгбенча над базой скормить в клиенте что-нибудь вот такое: test@test=> select pa.aid,abalance from pgbench_accounts as pa left join pgbench _history ph on pa.aid=ph.aid order by abalance; 5. А на сервере запустить выше указанный скрипт. Вуаля! Клиента можно прибить kill -9, а в консоли сервера наблюдать вот такое: test=# select datname,usename,backend_start, now(), query from pg_stat_activity where datname='test'; datname | usename | backend_start | now | query ---------+----------+-------------------------------+--------------------------- ---+---------------------------------------------------------------------------- ----------------------------------------- test | test | 2018-01-29 16:14:18.334963+00 | 2018-01-29 16:36:12.40825+ 00 | select pa.aid,abalance from pgbench_accounts as pa left join pgbench_histor y ph on pa.aid=ph.aid order by abalance; test | postgres | 2018-01-29 16:22:52.556845+00 | 2018-01-29 16:36:12.40825+ 00 | select datname,usename,backend_start, now(), query from pg_stat_activity wh ere datname='test'; (2 rows) test=# Т.е. бек запущен в 16:14, сейчас 16:36
Tcp keepalive еще проверь что будут работать или нет

Dmitry
29.01.2018
13:37:12
без gdb и не туды и не сюды

Mike Chuguniy
29.01.2018
14:03:29
так, net.ipv4.tcp_keepalive_time не при делах. Разве что, если время запроса больше этого времени, вот что в логе ПГ: 2018-01-29 16:39:32 UTC test@192.168.191.1/test [psql:17238]: LOG: could not send data to client: Время ожидания соединения истекло 2018-01-29 16:39:32 UTC test@192.168.191.1/test [psql:17238]: STATEMENT: select pa.aid,abalance from pgbench_accounts as pa left join pgbench_history ph on pa.aid=ph.aid order by abalance;

Dmitry
29.01.2018
14:39:35
https://www.postgresql.org/docs/current/static/runtime-config-connection.html

tcp_keepalives_idle tcp_keepalives_interval

а так система может в легкую обманывать. на текущей работе был wget из под крона который был запущен в 2015 году и прикидывался что активен

Let Eat
29.01.2018
14:41:15
Tcp keepalive еще проверь что будут работать или нет
TCP keep alive включается минут через 15 по умолчанию

Mike Chuguniy
29.01.2018
14:42:13
tcp_keepalives_idle tcp_keepalives_interval
по-умолчанию используются значения из системы.

И я сейчас не вспомню, чтобы эти значения редактировались в ПГ.

Dmitry
29.01.2018
14:43:24
по-умолчанию используются значения из системы.
тоесть pg не анализирует на логическом уровне, а просто устанавливает параметры на сокет?

Mike Chuguniy
29.01.2018
14:43:48
Судя по докам - да. В код я не лазил, сразу говорю.

Dmitry
29.01.2018
14:44:01
тада вообще чему вы удивляетесь.

Google
Mike Chuguniy
29.01.2018
14:44:57
тада вообще чему вы удивляетесь.
Я давно уже ничему не удивляюсь. Я тупо показываю, как имитировать подвисшие на стороне сервера соединения. А то пролетало, что не ловится такое. Ловится на ура.

Alex
29.01.2018
15:02:02
Dmitry
29.01.2018
15:06:25
добрый

подскажите, можно завернуть логи пг на stdout?

log_destination "stdout"?

Mike Chuguniy
29.01.2018
15:08:22
подскажите, можно завернуть логи пг на stdout?
Внезапный вопрос: зачем? Что вы хотите этим добиться?

Dmitry
29.01.2018
15:08:49
Внезапный вопрос: зачем? Что вы хотите этим добиться?
ох, внезапно мне так нужно для коллектора

докер

https://www.postgresql.org/docs/9.5/static/runtime-config-logging.html офдока говорит что в stderr заворачивается

но, судя по всему, нет

Mike Chuguniy
29.01.2018
15:09:50
Для коллектора логи заворачиваются в syslog, а сислог уже шлёт куда надо.

Dmitry
29.01.2018
15:10:42
Для коллектора логи заворачиваются в syslog, а сислог уже шлёт куда надо.
ну если я спрашиваю, то скорее всего, мое решение чем то обосновано?

причем, меня интересует именно slow log

Mike Chuguniy
29.01.2018
15:13:07
причем, меня интересует именно slow log
Я ещё раз повторяю вопрос: что вы хотите получить и где?

Dmitry
29.01.2018
15:13:37
Я ещё раз повторяю вопрос: что вы хотите получить и где?
хочу чтобы slow query были видны в stdout или stderr

Lev
29.01.2018
15:14:00
tail -f [файл лога]

Леонид
29.01.2018
17:25:28
Всем привет)

Народ, может кто может помочь? У меня в таблице 120 млн строк и когда делаю запросы, то первый запрос занимает секунд 20-70, но зато следующие по 1 сек. Запросы разные одинаково себя ведут. автовакуум настроен, реиндекс сделал. shared_buffers = '3GB'; effective_cache_size = '6GB'; Сервер: 8GB RAM, 4 CPU, SSD Что это может быть?)

Google
Artem
29.01.2018
17:31:34
А план что показывает?

Леонид
29.01.2018
17:32:13
сейчас скинуть попробую

Artem
29.01.2018
17:36:04
Ну сравнить просто надо explain analyse первого и последующих. Может быть план меняется и выборка уже из кеша идет

Леонид
29.01.2018
17:41:36




Andrey
29.01.2018
17:43:08
Покажите план с buffers

Леонид
29.01.2018
17:43:24
сори, а как его получить?)

Andrey
29.01.2018
17:43:51
И 3Gb для shared buffers многотовато при 8Gb RAM.

explain (analyze, verbose, buffers)

Леонид
29.01.2018
17:44:47


Страница 651 из 1062