Size: a a a

pgsql – PostgreSQL

2020 August 02

VY

Victor Yegorov in pgsql – PostgreSQL
Artemii
привет. есть база 40ГБ
там одна таблица 13ГБ (логи)
в 9.6
select * from log; работает, ну долговато
переехали в 11.8
select * from log; начинает жрать память машины (по забииксу) и Postgres процеcc - Killed
что можно посмотреть? конфиг какой нить или параметры
у вас есть возможность поставить пакет с debug-символами, запустить базу с ulimit -c unlimited и потом получить backtrace из core-файла?
источник

AG

Alex Gonchar in pgsql – PostgreSQL
А почему так postgres.ai  решили, надо вероятно Николая Самохвалова спросить.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Alex Gonchar
А почему так postgres.ai  решили, надо вероятно Николая Самохвалова спросить.
думаю потому, что в последнее время практикуется выставлять oom_score_adj, если посмотреть unit-файлы из PGDG репа, там это используется
https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT
источник

A

Artemii in pgsql – PostgreSQL
Victor Yegorov
у вас есть возможность поставить пакет с debug-символами, запустить базу с ulimit -c unlimited и потом получить backtrace из core-файла?
цель какая? вы предлагаете мне выложить coredump продовой базы кудато?
источник

A

Artemii in pgsql – PostgreSQL
Alex Gonchar
А почему так postgres.ai  решили, надо вероятно Николая Самохвалова спросить.
а вот непонятно, почему должно быть overcommit 2 - потому что эта строчка написана в документации без учёта контекста в котором она написана?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Artemii
цель какая? вы предлагаете мне выложить coredump продовой базы кудато?
вы наткнулись на баг, я думал что вы захотите, чтобы его исправили.
и да, я посылал backtrace с продовых баз (в тектовом виде) в рассылу
источник

A

Artemii in pgsql – PostgreSQL
Victor Yegorov
вы наткнулись на баг, я думал что вы захотите, чтобы его исправили.
и да, я посылал backtrace с продовых баз (в тектовом виде) в рассылу
backtrace это не coredump
если баг - ставлю postgresql-11-dbg
рестартую базу, запускаю запрос
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Artemii
> Т.е. падение сервера Вас / специалистов Postgres.ai в подобных случаях устраивает? ;)
> Аргументы какие-то есть?
> У Вас не процесс PostgreSQL (backend) убивается, а клиент (psql)!

извините, вам сколько лет?
я уже в нескольких сообщениях вам пишу, что прибивается не сервер (НЕ управляющий процесс), а процесс в котором запускается SELECT
и бинго, теперь вы это тоже обнаружили
> извините, вам сколько лет?

Извините, но это не Ваша проблема. Вот то, что Вы не можете внятно описать то, что происходит — возможно, Ваша.

> я уже в нескольких сообщениях вам пишу, что прибивается не сервер (НЕ управляющий процесс)

ORLY? Покажите-ка цитаты. ;)

Вот то, что Вы писали:

> и Postgres процеcc - Killed

Psql — это "Postgres процеcc"?

> у меня именно OOMkiller прихдит и убивает только тот процесс, который делает этот запрос.

Запросы выполняют backends PostgreSQL, а не клиенты (которые только посылают их / получают ответы).
Я на основании написанного должен сделать вывод, что Вы этого не знаете? ;) Я подумал, что Вы пишете про backend, конечно.

> постгрес запускает кучу процессов, и один из процессов исполняет мой запрос. и именно этот запрос прибивается

См. выше.

> а процесс в котором запускается SELECT

Опять-таки, в нём ничего не "запускается", он его просто отправляет на сервер.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Victor Yegorov
думаю потому, что в последнее время практикуется выставлять oom_score_adj, если посмотреть unit-файлы из PGDG репа, там это используется
https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT
Этого не достаточно, чтобы OOM kills PostgreSQL backends не было. А когда они есть — всё равно плохо.
источник

A

Artemii in pgsql – PostgreSQL
Yaroslav Schekin
> извините, вам сколько лет?

Извините, но это не Ваша проблема. Вот то, что Вы не можете внятно описать то, что происходит — возможно, Ваша.

> я уже в нескольких сообщениях вам пишу, что прибивается не сервер (НЕ управляющий процесс)

ORLY? Покажите-ка цитаты. ;)

Вот то, что Вы писали:

> и Postgres процеcc - Killed

Psql — это "Postgres процеcc"?

> у меня именно OOMkiller прихдит и убивает только тот процесс, который делает этот запрос.

Запросы выполняют backends PostgreSQL, а не клиенты (которые только посылают их / получают ответы).
Я на основании написанного должен сделать вывод, что Вы этого не знаете? ;) Я подумал, что Вы пишете про backend, конечно.

> постгрес запускает кучу процессов, и один из процессов исполняет мой запрос. и именно этот запрос прибивается

См. выше.

> а процесс в котором запускается SELECT

Опять-таки, в нём ничего не "запускается", он его просто отправляет на сервер.
беспредметно. извините.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Artemii
а вот непонятно, почему должно быть overcommit 2 - потому что эта строчка написана в документации без учёта контекста в котором она написана?
Потому что, когда сервер падает, он может подниматься, к примеру (зависит от настройки checkpoints) минут 5.
Это какая-то не очень availability. ;)
источник

A

Artemii in pgsql – PostgreSQL
Yaroslav Schekin
Потому что, когда сервер падает, он может подниматься, к примеру (зависит от настройки checkpoints) минут 5.
Это какая-то не очень availability. ;)
сервер не падает => overcommit=2 ненужен
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Artemii
беспредметно. извините.
Т.е. Вы не смогли понятно объяснить, и теперь кто-то другой виноват?
Ну так это только Ваши проблемы, и прекращайте хамить.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
показали бы что ли изменения в sysctl.conf и настройки базы по памяти. заодно напишите, что ещё из софта живёт на сервере?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Victor Yegorov
показали бы что ли изменения в sysctl.conf и настройки базы по памяти. заодно напишите, что ещё из софта живёт на сервере?
Подождите... почему Вы думаете, что это падение вообще связано с сервером PostgreSQL?
У него же там клиента убивает OOM killer.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
а я не знаю что думать. прошу хоть какие-то конфиги
источник

A

Artemii in pgsql – PostgreSQL
Victor Yegorov
показали бы что ли изменения в sysctl.conf и настройки базы по памяти. заодно напишите, что ещё из софта живёт на сервере?
net.ipv4.ip_forward=1
net.core.somaxconn=32768
net.core.netdev_max_backlog=5000
net.ipv4.tcp_max_syn_backlog=16384
net.core.rmem_max=33554432
net.core.wmem_max=33554432
net.core.rmem_default=8388608
net.core.wmem_default=8388608
net.ipv4.tcp_rmem=2097152 8388608 33554432
net.ipv4.tcp_wmem=2097152 8388608 33554432
net.ipv4.udp_mem=2097152 4194304  8388608
fs.nr_open=16777216
fs.file-max=8388608
net.ipv4.tcp_fin_timeout=20
fs.inotify.max_user_watches=16777216
fs.inotify.max_queued_events=65536
kernel.sched_migration_cost_ns=5000000
источник

A

Artemii in pgsql – PostgreSQL
│               name               │                 setting                 │

│ data_directory                   │ /var/lib/postgresql/11/main             │
│ hba_file                         │ /etc/postgresql/11/main/pg_hba.conf     │
│ ident_file                       │ /etc/postgresql/11/main/pg_ident.conf   │
│ external_pid_file                │ /var/run/postgresql/11-main.pid         │
│ listen_addresses                 │ *                                       │
│ port                             │ 5432                                    │
│ max_connections                  │ 300                                     │
│ unix_socket_directories          │ /var/run/postgresql                     │
│ ssl                              │ on                                      │
│ ssl_cert_file                    │ /etc/ssl/certs/ssl-cert-snakeoil.pem    │
│ ssl_key_file                     │ /etc/ssl/private/ssl-cert-snakeoil.key  │
# до рестарта shared_buffers было 8ГБ, уменьшаю до 4 ГБ - не помогает.
│ shared_buffers                   │ 4GB                                     │
│ work_mem                         │ 20971kB                                 │
│ maintenance_work_mem             │ 2GB                                     │
│ dynamic_shared_memory_type       │ posix                                   │
│ effective_io_concurrency         │ 200                                     │
│ max_worker_processes             │ 16                                      │
│ max_parallel_maintenance_workers │ 4                                       │
│ max_parallel_workers_per_gather  │ 4                                       │
│ max_parallel_workers             │ 16                                      │
│ wal_level                        │ replica                                 │
│ wal_log_hints                    │ on                                      │
│ wal_buffers                      │ 16MB                                    │
│ max_wal_size                     │ 4GB                                     │
│ min_wal_size                     │ 1GB                                     │
│ checkpoint_completion_target     │ 0.7                                     │
│ max_wal_senders                  │ 10                                      │
│ wal_keep_segments                │ 128                                     │
│ max_replication_slots            │ 10                                      │
│ random_page_cost                 │ 1.1                                     │
│ effective_cache_size             │ 24GB                                    │
│ default_statistics_target        │ 100                                     │
│ log_min_duration_statement       │ 5000                                    │
│ log_line_prefix                  │ %m [%p] %q%u@%d                         │
│ log_lock_waits                   │ on                                      │
│ log_timezone                     │ Etc/UTC                                 │
│ cluster_name                     │ 11/main                                 │
│ stats_temp_directory             │ /var/run/postgresql/11-main.pg_stat_tmp │
│ datestyle                        │ iso, mdy                                │
│ timezone                         │ Etc/UTC                                 │
│ lc_messages                      │ en_US.UTF-8                             │
│ lc_monetary                      │ en_US.UTF-8                             │
│ lc_numeric                       │ en_US.UTF-8                             │
│ lc_time                          │ en_US.UTF-8                             │
│ default_text_search_config       │ pg_catalog.english                      │
│ shared_preload_libraries         │ pg_stat_statements                      │
│ pg_stat_statements.max           │ 10000                                   │
│ pg_stat_statements.track         │ all                                     │
│ track_io_timing                  │ on                                      │
источник

A

Artemii in pgsql – PostgreSQL
софт голый ubuntu 16.04 - ssh irqbalancer и прочие cron - не перечисляю
источник

A

Artemii in pgsql – PostgreSQL
Yaroslav Schekin
Т.е. Вы не смогли понятно объяснить, и теперь кто-то другой виноват?
Ну так это только Ваши проблемы, и прекращайте хамить.
еще раз извините. где хамство?
источник