@pgsql

Страница 434 из 1062
Dmitry
17.08.2017
10:43:32
так делать нельзя, в общем случае

Alexey
17.08.2017
10:43:44
а так делают. и postgres, я уверен, тоже

много лет назад я написал отладочный код в mysql, позволяющий такие случаи отлавливать и покрывать тесткейсами

Dmitry
17.08.2017
11:02:45
а так делают. и postgres, я уверен, тоже
Это не совсем так. Есть память, выделяемая напрямую при помощи malloc, но таких мест мало. Для всего остального используется обвязка palloc, которая умеет вот так: if (ret == NULL) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu.", size))); }

Google
Alexey
17.08.2017
11:06:24
Похожая обвязка есть и в mysql. Тем не менее, баги такого типа всплывают до сих пор

Stas
17.08.2017
11:34:11
возможен: https://gist.github.com/akopytov/28bbbb50e07b65e9d0f2479317f41894
не очень понятно что это демонстрирует. Можно было сразу ноль разыменовать) Если добавить проверку на null, то сегфолта не будет

Alexey
17.08.2017
11:39:42
Так выше обсудили

Вопрос, на который я отвечал: "Maksim Milyutin: @Komzpa получается, segfault невозможен при исчерпании процессом физической памяти и swap'а?"

Stas
17.08.2017
11:41:38
про баги ок, но утверждение "segfault невозможен при исчерпании процессом физической памяти и swap'а" это не опровергает, так?

Maksim
17.08.2017
11:42:02
@alexey_kopytov ваш случай демонстрирует ошибку разраба, я же всё-таки имел в виду segfault независимо от него

Alexey
17.08.2017
11:42:14
Так ведь возможен?

Ну значит я неправильно понял вопрос

Maksim
17.08.2017
11:43:32
В коде pg проверки как правило стоят после malloc

Alexey
17.08.2017
11:44:07
в коде mysql тоже. "как правило" — ключевые слова

Che
17.08.2017
13:36:48
Создавал кластер в /var/, теперь стало мало места. Есть место в хомяке. Я могу как-то перенести старые базы из /var?

Che
17.08.2017
13:43:27
можешь!
ага, я уже нашел)

Google
عاصم بن حارث
17.08.2017
13:43:34
?

Nikolay
17.08.2017
14:47:26
чтобы запросы на запись шли на мастер, а на слейв только чтение
Промышленного решения нет. Учите своё приложение r/o запросы посылать на реплику.

Mike Chuguniy
17.08.2017
15:36:17
systemd не учитывает limits.conf. Надо в юнит ставить
Спасибо тебе, друХ! test@webdeb:~$ grep "^Max core file size" /proc/1927/limits Max core file size unlimited unlimited bytes test@webdeb:~$ grep LimitCORE /etc/systemd/system.conf DefaultLimitCORE=infinity test@webdeb:~$ Только не надо в юниты лезть, надо документацию читать. man systemd-system.conf однако! ЗЫ. А те, кто сидит на init-скриптах - страдайте, ага.

Dmitry
17.08.2017
16:22:58
Darafei
17.08.2017
16:23:39
Mike Chuguniy
17.08.2017
16:23:59
точно, на проде постгрес запускать не надо! :)
Прод вообще запускать не надо!

Его же ещё обслуживать необходимо. Ну и всё такое прочее...

Nikolai
17.08.2017
17:42:52
pgpool?
он умеет сплитить запросы ?

Nick
17.08.2017
17:42:58
ну да

Nikolai
17.08.2017
18:08:20
ну да
Спасибо, буду читать

Konstantin
17.08.2017
18:13:02
Посоветуйте плиз что-то под мультимастер или как лучше HA с автофайловером, фэйлбэком? Аля Galera что ли? Пришёл из мира mysql и что-то не разберусь

Nick
17.08.2017
18:13:28
pgpool? ?

Konstantin
17.08.2017
18:14:00
Pgpool же вроде не про это?

2й во всяком случае, если это разное

Nick
17.08.2017
18:14:30
ну формально и про это тоже - только я никогда именно для этого его не использовал - да и вообще я не уверен, как он себя под очень серьезной нагрузкой будет вести

Google
Konstantin
17.08.2017
18:15:30
Я попробовал готовое решение с pgpool2+repmgr, но первый же тест провалился, фэйлбэк не проходит

Nick
17.08.2017
18:15:33
мультимастер... была какая-то шняга - мы ее тестили - но это тихий ужас - еще хуже галеры ?

ну вот когда провалится 10й тест после обработки напильником - тогда и можно будет что-то говорить )

Konstantin
17.08.2017
18:16:29
С синхронной репликацией не всё тау просто?

Nick
17.08.2017
18:17:55
ну мы про мультимастер.. синхронная репликация в режиме одного мастера и слейвов работает чудесно

Konstantin
17.08.2017
18:19:39
Но как и в случае с галерой - потеря на записи, я не найду цифры, она существенная? И чем вообще это организовывать

Nick
17.08.2017
18:20:08
у нас было -35% по скорости ?

на 3х нодах

какой-то из стандартных тестов..tpc-чтото

Konstantin
17.08.2017
18:20:32
Смотрю сейчас Stolon как готовое решение, из минусов пока только - не умеет балансировку

Nick
17.08.2017
18:21:27
ок.. с тебя success story ?

Konstantin
17.08.2017
18:23:03
Такой себе с меня рассказчик, я думаю в 2017 есть кому такое рассказывать))

Mike Chuguniy
17.08.2017
18:26:54
Посоветуйте плиз что-то под мультимастер или как лучше HA с автофайловером, фэйлбэком? Аля Galera что ли? Пришёл из мира mysql и что-то не разберусь
Готовых решений НЕТ. Есть некоторое количество связок на сторонних продуктах. Про мультимастер луТше забыть сразу. Совсем.

Fike
17.08.2017
18:27:43
нету мультимастера в классических sql. и не завезут.

Konstantin
17.08.2017
18:28:35
В мускле же есть

Mike Chuguniy
17.08.2017
18:29:37
Вот, посмотрите, что предлагает коллективный разум: https://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling

Konstantin
17.08.2017
18:31:19
да, я видел это и по каждому отдельно читал. Но читать одно =\

Mike Chuguniy
17.08.2017
18:34:32
Покрутите пару-другую дней назад по чатЕГу, там Игорь Успенский говорил об одной из связок. Лично я делал в своё время на heartbeat-е (во времена 5-го Деба и 4-й ЦентОСи), видел на corosync+pacemaker.

Google
Konstantin
17.08.2017
18:45:55
https://github.com/zalando/patroni https://github.com/sorintlab/stolon вот сейчас буду тестить, хз что выйдет

Vadim
17.08.2017
18:52:51
В мускуле? мультимастер? Откуда он там?)

Fike
17.08.2017
18:52:58
двухфазный коммит не работает в распределенной системе

это обман, чтобы набрать классы

Vadim
17.08.2017
18:53:54
мультимастер не возможен без арбитра/координатора

Fike
17.08.2017
18:54:17
паксос позволяет

Vadim
17.08.2017
18:58:20
Это вы про гугл что ли с их Big Table?)

Yura
17.08.2017
19:01:22
В F1/Spaner paxos для репликации шарда и 2pc для меж-шардовых транзакций, если мне память не изменяет.

Konstantin
17.08.2017
19:01:23
мультимастер не возможен без арбитра/координатора
ну вот если бы у Вас в фамилии пару букв поменять, я бы даже спорить не стал, а так поспорю за арбитров - он не всегда необходим

Admin
ERROR: S client not available

Vadim
17.08.2017
19:06:54
CRDT (conflict-free replicated data type)?

Yura
17.08.2017
19:24:14
Расширенный трех-фазный коммит может комитить кворумом.

Очень похожий алгоритм - paxos commit от Лампорта.

Vadim
17.08.2017
19:25:46
а что в этом случае будет с перфомансом?

Yura
17.08.2017
19:26:12
Мы выясняем вопрос, нужен ли арбитр.

Ответ: ноды сами могут собираться в "мини кластер" и принимать решение кворумом.

Vadim
17.08.2017
19:28:33
аля etcd, consul, zookeeper?

Fike
17.08.2017
19:29:38
etcd и consul не принимают решение кворумом

Vadim
17.08.2017
19:30:01
принимает решение лидер. Но кворум должен быть

Google
Yura
17.08.2017
19:30:16
У этих товарище одинаковая архитектура: кворумная репликация от мастера к репликам одних и тех же данных алгоритмом семейства paxos (raft, zab - в принципе изоморфны друг другу)

Двух фазный, трех фазный коммиты - это про изменение несколькими мастерами разных (в общем случае, но может и одних и тех же) данных

Vadim
17.08.2017
19:32:22
Это вы проводите исследование в pgpro мультимастере?

Yura
17.08.2017
19:33:01
Нет. Его пишут другие ребята (по умнее меня). Я просто болтаю с ними, и почитываю литературу.

Vadim
17.08.2017
19:34:23
ок, спасибо за инфу)

Artem
18.08.2017
00:48:50
В общем, лучшее - враг хорошего.

Мастер падал вместе со слейвами на одном определенном запросе.

Причина была в новом параметре 9.6 max-paralles-workers-per-gather

У нас был выставлен в 16

При общем количестве ядер 24

Отключив данный параметр, все стало прекрасно.

Теперь вопрос, у кого и как используется данный параметр параллелизма?

Yuriy
18.08.2017
01:18:21
15.1. Как работают параллельно выполняемые запросы https://postgrespro.ru/docs/postgresql/9.6/how-parallel-query-works.html Используя EXPLAIN, вы можете узнать количество исполнителей, выбранное планировщиком для данного запроса. Когда при выполнении запроса достигается узел Gather, процесс, обслуживающий сеанс пользователя, запрашивает фоновые рабочие процессы в этом количестве. Общее число фоновых рабочих процессов, которые могут существовать одновременно, ограничивается параметром max_worker_processes, так что вполне возможно, что параллельный запрос будет выполняться меньшим числом рабочих процессов, чем планировалось, либо вообще без дополнительных рабочих процессов. Оптимальность плана может зависеть от числа доступных рабочих процессов, так что их нехватка может повлечь значительное снижение производительности. Если это наблюдается часто, имеет смысл увеличить max_worker_processes, чтобы одновременно могло работать больше процессов, либо уменьшить max_parallel_workers_per_gather, чтобы планировщик ожидал их наличия в меньшем количестве.

RTFM в общем.

Artem
18.08.2017
01:23:37
RTFM в общем.
Т.е. Вы хотите сказать, что max-worker-processes 10 при max-parallel-workers-per-gather 16 это моветон?

Yuriy
18.08.2017
01:25:11
Всё зависит от криворукости того кто проектировал схему: какие у вас запросы выполняются и какие применяются блокировки - используйте explain что бы понять почему у вас происходит ожидание освобождения рабочих потоков для КОНКРЕТНОГО запроса.

Я не думаю что мне стоит объяснять как читать документацию и следовать её указаниям.

В целом число worker'ов не обязательно должно равняться количеству ядер умноженному на два - это работает только в случае с thread pool'aми и прочими примитивами в общепринятых многопоточных решениях. В PostgreSQL'e блокировки происходят довольно часто, по разным причинам, по этому при определении оптимального числа Worker'ов нужно брать во внимание особенности работы существующих паралельных запросов.

Darafei
18.08.2017
02:50:37
Отключив данный параметр, все стало прекрасно.
очень странно. хитрые сишные функции в запросе есть?

Artem
18.08.2017
02:58:50
При значении max- parallel-workers-per-gather 4, полет нормальный, уже в течение часа.

Darafei
18.08.2017
03:02:37
оно не должно крешиться при любых сочетаниях этих параметров

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