
Anton
11.05.2017
07:14:49
Много idle это проблема с приложением. Зачем оно их держит?
это пул, он должен держать соединения

Петр
11.05.2017
07:15:14
ps -u postgres o pid,rss:8,cmd | awk 'NR>1 {A+=$2} {print} END{print "Total RSS: " A}'

Айтуар
11.05.2017
07:15:15

Google

Anton
11.05.2017
07:15:28
:) уже есть

Ascandar
11.05.2017
07:15:54
может в приложениях забыли close дописать?

Anton
11.05.2017
07:16:16

Denis
11.05.2017
07:18:38
Кстати, у вас процессы кушают под 400-700Мб. Это нормально для того, что они делают?

Ascandar
11.05.2017
07:18:55
может таймауты выставить для idle коннекшн?

Петр
11.05.2017
07:20:54
судя по всему, вам надо смотреть запросы, дело по большей части не в конфиге пг и ос


Anton
11.05.2017
07:25:46
[postgres@ conf]$ ps uxf | grep message1 | sort -nk6 | tail -10 | tee ? cat - >&2) | awk '{system("cat /proc/"$2"/smaps")}' | grep ^Private | awk '{A+=$2} END{print A/1024}'
postgres 27508 2.0 2.7 2823712 455840 ? Ss 10:23 0:01 \_ postgres: message message1 172.20.3.166(47786) idle
postgres 27410 3.1 2.7 2823716 456576 ? Ss 10:23 0:02 \_ postgres: message message1 172.20.3.166(47606) idle
postgres 27401 8.3 4.4 3094168 727136 ? Ss 10:23 0:06 \_ postgres: message message1 172.20.3.166(47600) idle
postgres 27509 10.8 4.4 3094164 727352 ? Ss 10:23 0:06 \_ postgres: message message1 172.20.3.166(47788) idle
postgres 27511 13.1 4.4 3094164 727640 ? Ss 10:23 0:08 \_ postgres: message message1 172.20.3.166(47792) idle
postgres 26902 12.8 4.4 3094236 730808 ? Ss 10:23 0:14 \_ postgres: message message1 172.20.3.166(47004) idle
postgres 26915 6.0 4.5 3105144 746484 ? Ss 10:23 0:06 \_ postgres: message message1 172.20.3.166(47030) idle
postgres 27071 6.2 4.5 3105144 747080 ? Ss 10:23 0:06 \_ postgres: message message1 172.20.3.166(47056) idle
postgres 26917 8.4 4.5 3105120 748324 ? Ss 10:23 0:09 \_ postgres: message message1 172.20.3.166(47034) idle
postgres 27192 8.0 4.5 3105164 748404 ? Ss 10:23 0:08 \_ postgres: message message1 172.20.3.166(47098) idle
6073.8
[postgres@ conf]$ psql -x -c "select * from pg_stat_activity where pid=27508";
Timing is on.
-[ RECORD 1 ]----+-------------------------------------------------------------------------------------------------------------------
datid | 16623
datname | message1
pid | 27508
usesysid | 16621
usename | message
application_name |
client_addr | 172.20.3.166
client_hostname |
client_port | 47786
backend_start | 2017-05-11 10:24:00.667316+03
xact_start |
query_start | 2017-05-11 10:24:42.819504+03
state_change | 2017-05-11 10:24:42.822031+03
wait_event_type |
wait_event |
state | idle
backend_xid |
backend_xmin |
query | COMMIT PREPARED '131077_AAAAAAAAAAAAAP//rBQDGuJENnFZE/+wAAm5XjE=_AAAAAAAAAAAAAP//rBQDGuJENnFZE/+wAAm5YAAAAAMAAAAA'


Петр
11.05.2017
07:26:46
планы конечно
посмотрите не лезут ли они для сортировки на диск
и пр

Google

Anton
11.05.2017
07:27:11
т.е берем топ запросов и смотрим планы.. но воркмем же должен ограничивать потребление ?
ps uxf | grep message1 | sort -nk6 | tail -1 | tee ? cat - >&2) | awk '{system("cat /proc/"$2"/smaps")}' | grep ^Private | awk '{A+=$2} END{print A/1024}'
postgres 26902 7.1 4.6 3118796 754684 ? Ss 10:23 0:18 \_ postgres: message message1 172.20.3.166(47004) idle
678.277
у меня на сессию 600 мегабайт ушло, хотя она в статусе в idle

Aleksandr
11.05.2017
07:29:32
ps uxf | grep message1 | sort -nk6 | tail -1 | tee ? cat - >&2) | awk '{system("cat /proc/"$2"/smaps")}' | grep ^Private | awk '{A+=$2} END{print A/1024}'

Anton
11.05.2017
07:30:39
подскажите что не так, а то так и помру необразованным )

Петр
11.05.2017
07:30:56
посмотрите в smaps что там
если возможно, заведите задание, прибивающее долгопростаивющие сессии

Darafei
11.05.2017
07:31:19

Denis
11.05.2017
07:31:26
Сколь я помню, work mem только для сортировки используется. И он относится к общим ресурсам процессов. А у вас каждое соединение жрет память. И именно с ними надо что-то делать.
Например, уменьшить количество соединений в пуле

Sergey
11.05.2017
07:32:10

Anton
11.05.2017
07:32:37
уменьшить до 5ти ? :)

Айтуар
11.05.2017
07:32:48

Denis
11.05.2017
07:32:52

Darafei
11.05.2017
07:33:19

Denis
11.05.2017
07:33:26

Anton
11.05.2017
07:33:41

Dmitry
11.05.2017
07:33:53

Denis
11.05.2017
07:34:14
Ну и да, посмотреть через pg_stat_statements общий топ. Скорее всего надо оптимизировать запросы

Anton
11.05.2017
07:34:21

Петр
11.05.2017
07:34:32
99% дело в запросах

Google

Петр
11.05.2017
07:35:49
соберите статистику, заведите на будущее pg_stat_statements в заббикс или чем вы мониторите

Anton
11.05.2017
07:38:19
SELECT d.datname, substring(query, 1, 150) AS short_query,
round(total_time::numeric, 2) AS total_time,
calls,
round(mean_time::numeric, 2) AS mean,
round((100 * total_time /
sum(total_time::numeric) OVER ())::numeric, 2) AS percentage_cpu
FROM pg_stat_statements s
join pg_database d on s.dbid=d.oid
ORDER BY total_time DESC limit 10;
имхо никакой магии, индексы есть
message1=# select relname,seq_scan from pg_stat_user_tables where seq_scan>0;
relname | seq_scan
-------------------+----------
delivered_message | 1

Vladimir
11.05.2017
07:50:44
А что за приложение убивается OOM киллером? И зачем ему в пике 60 конектов к базе выяснили уже?


Anton
11.05.2017
07:54:11
А что за приложение убивается OOM киллером? И зачем ему в пике 60 конектов к базе выяснили уже?
May 11 09:37:49 hostname1 kernel: Out of memory: Kill process 17448 (postmaster) score 20 or sacrifice child
May 11 09:38:39 hostname1 kernel: Out of memory: Kill process 17626 (postmaster) score 30 or sacrifice child
May 11 09:41:13 hostname1 kernel: Out of memory: Kill process 17801 (postmaster) score 38 or sacrifice child
May 11 09:41:46 hostname1 kernel: Out of memory: Kill process 18051 (postmaster) score 17 or sacrifice child
May 11 09:46:04 hostname1 kernel: Out of memory: Kill process 18291 (postmaster) score 40 or sacrifice child
May 11 09:51:30 hostname1 kernel: Out of memory: Kill process 19656 (postmaster) score 39 or sacrifice child
May 11 10:05:11 hostname1 kernel: Out of memory: Kill process 23772 (postmaster) score 39 or sacrifice child
May 11 10:11:51 hostname1 kernel: Out of memory: Kill process 24627 (postmaster) score 39 or sacrifice child
May 11 10:20:24 hostname1 kernel: Out of memory: Kill process 25370 (postmaster) score 40 or sacrifice child
May 11 10:22:55 hostname1 kernel: Out of memory: Kill process 26338 (postmaster) score 38 or sacrifice child
May 11 10:28:32 hostname1 kernel: Out of memory: Kill process 26902 (postmaster) score 40 or sacrifice child
May 11 10:31:26 hostname1 kernel: Out of memory: Kill process 29267 (postmaster) score 38 or sacrifice child
May 11 10:38:10 hostname1 kernel: Out of memory: Kill process 29820 (postmaster) score 39 or sacrifice child
May 11 10:46:06 hostname1 kernel: Out of memory: Kill process 30639 (postmaster) score 39 or sacrifice child
May 11 10:46:39 hostname1 kernel: Out of memory: Kill process 31536 (postmaster) score 22 or sacrifice child
May 11 10:47:13 hostname1 kernel: Out of memory: Kill process 31730 (postmaster) score 26 or sacrifice child
May 11 10:50:06 hostname1 kernel: Out of memory: Kill process 31891 (postmaster) score 39 or sacrifice child
May 11 10:52:10 hostname1 kernel: Out of memory: Kill process 32276 (postmaster) score 40 or sacrifice child
May 11 10:52:54 hostname1 kernel: Out of memory: Kill process 703 (postmaster) score 26 or sacrifice child


Ascandar
11.05.2017
08:00:05
само ядро решила взяться за оптимизацию ))))

Anton
11.05.2017
08:02:07
да ахтунг какой-то )

Vladimir
11.05.2017
08:06:03
Ааа попутал. Понял приложение, творящее это, на 172.20.3.166 развернуто. Побовали выяснить куда ему столько всего нужно?

Anton
11.05.2017
08:11:22
нашли что идут инсерты в партицированную таблицу, партиций 1232 )

Anton
11.05.2017
08:11:31
пошли к разработчикам узнавать зачем их столько завели)))

Maks
11.05.2017
09:03:57
Кто-нибудь знает инструменты для анализа производительности индексов?


Kirill
11.05.2017
09:15:07
SELECT
pg_stat_user_indexes.schemaname||'.'||pg_stat_user_indexes.relname,
indexrelname,
pg_stat_user_indexes.idx_scan,
(coalesce(n_tup_ins,0)+coalesce(n_tup_upd,0)-coalesce(n_tup_hot_upd,0)+coalesce(n_tup_del,0)) as write_activity,
pg_stat_user_tables.seq_scan,
pg_stat_user_tables.n_live_tup,
pg_size_pretty(pg_relation_size(pg_index.indexrelid::regclass)) as size
from pg_stat_user_indexes
join pg_stat_user_tables
on pg_stat_user_indexes.relid=pg_stat_user_tables.relid
join pg_index
ON pg_index.indexrelid=pg_stat_user_indexes.indexrelid
where
pg_index.indisunique is false
and pg_stat_user_indexes.idx_scan::float/(coalesce(n_tup_ins,0)+coalesce(n_tup_upd,0)-coalesce(n_tup_hot_upd,0)+coalesce(n_tup_del,0)+1)::float<0.01
and (coalesce(n_tup_ins,0)+coalesce(n_tup_upd,0)-coalesce(n_tup_hot_upd,0)+coalesce(n_tup_del,0))>10000
order by 4 desc,1,2;
показывает неэффективные индексы


Артур
11.05.2017
10:11:02
Подскажите пожалуйста чат, где проконсультируют по OSM

Anton [Mgn, az09@osm]
11.05.2017
10:12:02

Артур
11.05.2017
10:12:15
спасибо

Google

Anton [Mgn, az09@osm]
11.05.2017
10:12:21
а потом сразу к @Komzpa конечно ?

Artem
11.05.2017
10:38:59
есть следующая проблема есть сервер (30Gb Ram 80gb ssd) с одним инстансом постгреса - на нем крутятся примерно 80 баз - к каждой базе коннектятся сайты которые завязаны каждый на свою базу - в среднем весит 150 коннекшенов. Иногда возникает проблема с медленными запросами как итог остальные выстраиваются в очередь появляются тормоза и завершается все падением lighttpd. Может быть есть какие-то рекомендации как это технически правильно уладить? Спасибо.

Anton [Mgn, az09@osm]
11.05.2017
10:40:03
закидать железом конечно же

Gefort
11.05.2017
10:40:42
Всем привет

Darafei
11.05.2017
10:40:43

Gefort
11.05.2017
10:40:44
Вот эту команду исполняю
CREATE INDEX IF NOT EXISTS userid_idx ON users (uid);

Admin
ERROR: S client not available

Gefort
11.05.2017
10:40:51
Ошибка вылазит
ERROR: syntax error at or near "NOT" (SQLSTATE 42601)
С чем может быть связано?
На своем компе все норм, на сервере - нет

Darafei
11.05.2017
10:42:06
на сервере 9.4, у себя 9.6?

Петр
11.05.2017
10:43:06
или 9.5 у него

Gefort
11.05.2017
10:44:37
Как версию проверить?

Петр
11.05.2017
10:45:14
select version()

Gefort
11.05.2017
10:45:57
У меня 9.5
На сервере 9.3
Спасибо

Artem
11.05.2017
10:46:40

Google

Darafei
11.05.2017
10:49:42
а можно поподробнее?
https://www.postgresql.org/docs/9.6/static/runtime-config-client.html#GUC-STATEMENT-TIMEOUT

Denis
11.05.2017
10:50:55

Darafei
11.05.2017
10:52:06

Artem
11.05.2017
10:53:20
Спасибо, мы решили немного проблему по другому, скидываем запросы которые больше 3 минут на стороне бэкэнда и пускаем их на оптимизацию, я просто думал может есть какие-то еще моменты которые можно улучшить.

Denis
11.05.2017
10:53:34
Может лучше настроить пул соединений, так, чтобы каждой базе было гарантировано одно своё соединение, а остальные были в общем доступе? Как раз там 80 баз и 150 коннектов.

Anton [Mgn, az09@osm]
11.05.2017
10:54:09

Darafei
11.05.2017
10:57:24

Anton [Mgn, az09@osm]
11.05.2017
10:57:46
тем не менее это очень радикально

Artem
11.05.2017
10:59:18

Петр
11.05.2017
10:59:25

Anton [Mgn, az09@osm]
11.05.2017
11:00:25

Denis
11.05.2017
11:00:55

Anton [Mgn, az09@osm]
11.05.2017
11:01:15
закидать железом конечно же

Artem
11.05.2017
11:02:08
Модель vCPU Память (ГиБ) SSD-хранилище (ГБ)
m3.2xlarge 8 30 2 x 80
Общий объем баз 44Гб. Самый большой клиент это 6Гб база.

Anton [Mgn, az09@osm]
11.05.2017
11:04:50
блин, ну облако в амстердамах за 5 евро что-ли, 2 гига, 2 ядра, 50 гигов ссд. да на каждого клиента взять такой и не париться
для базы в 6Гб даже многовато выглядит

Denis
11.05.2017
11:07:41
6Гб и запросы выполняются минутами? Самая лучшая рекомендация - рефакторинг схемы и запросов, остальное - временное и симптоматическое лечение

Сергей
11.05.2017
11:09:31
Вы че-то оч неправильное в базе делаете))
6 гб в памяти мясить оч быстро можно.. за секунды